diff options
Diffstat (limited to 'src/gui/doc/snippets/code')
| -rw-r--r-- | src/gui/doc/snippets/code/src_gui_painting_qpainterstateguard.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/gui/doc/snippets/code/src_gui_painting_qpainterstateguard.cpp b/src/gui/doc/snippets/code/src_gui_painting_qpainterstateguard.cpp new file mode 100644 index 00000000000..adcccd60aa1 --- /dev/null +++ b/src/gui/doc/snippets/code/src_gui_painting_qpainterstateguard.cpp @@ -0,0 +1,54 @@ +// Copyright (C) 2024 Christian Ehrlicher <ch.ehrlicher@gmx.de> +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +#include <QPaintEvent> +#include <QPainter> +#include <QPainterStateGuard> +#include <QWidget> + + +namespace src_gui_painting_qpainterstateguard { +struct MyWidget : public QWidget +{ + void paintEvent(QPaintEvent *) override; + bool drawText = true; + QLine line; +}; +struct MyGuardWidget : public QWidget +{ + void paintEvent(QPaintEvent *) override; + bool drawText = true; + QLine line; +}; + +//! [0] +void MyWidget::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + painter.setPen(Qt::red); + if (drawText) { + painter.save(); + painter.setPen(Qt::blue); + painter.setFont(QFont("Arial", 30)); + painter.drawText(rect(), Qt::AlignCenter, "Qt"); + painter.restore(); // don't forget to restore previous painter state + } + painter.drawLine(line); +} +//! [0] + +//! [1] +void MyGuardWidget::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + painter.setPen(Qt::red); + if (drawText) { + QPainterStateGuard guard(&painter) + painter.setPen(Qt::blue); + painter.setFont(QFont("Arial", 30)); + painter.drawText(rect(), Qt::AlignCenter, "Qt"); + } + painter.drawLine(line); +} +//! [1] + +} // src_gui_painting_qpainterstateguard |
