summaryrefslogtreecommitdiffstats
path: root/src/gui/doc/snippets/code
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/doc/snippets/code')
-rw-r--r--src/gui/doc/snippets/code/src_gui_painting_qpainterstateguard.cpp54
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