QPainterStateGuard Class

QPainterStateGuard ist eine RAII-Komfortklasse für ausgewogene QPainter::save() und QPainter::restore() Aufrufe. Mehr...

Kopfzeile: #include <QPainterStateGuard>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Seit: Qt 6.9

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

QPainterStateGuard(QPainter *painter, QPainterStateGuard::InitialState state = InitialState::Save)
QPainterStateGuard(QPainterStateGuard &&other)
~QPainterStateGuard()
void restore()
void save()
void swap(QPainterStateGuard &other)
QPainterStateGuard &operator=(QPainterStateGuard &&other)

Detaillierte Beschreibung

QPainterStateGuard sollte überall als Ersatz für QPainter::save() verwendet werden, um sicherzustellen, dass die entsprechende QPainter::restore() nach Beendigung der Malroutine aufgerufen wird, um unausgewogene Aufrufe zwischen diesen beiden Funktionen zu vermeiden.

Beispiel mit QPainter::save()/QPainter::restore():

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);
}

Beispiel mit QPainterStateGuard:

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);
}

Siehe auch QPainter.

Dokumentation der Mitgliedsfunktionen

[explicit] QPainterStateGuard::QPainterStateGuard(QPainter *painter, QPainterStateGuard::InitialState state = InitialState::Save)

Konstruiert einen QPainterStateGuard und ruft save() auf painter auf, wenn state InitialState::Save ist (was der Standard ist). Wenn QPainterStateGuard zerstört wird, wird restore() so oft aufgerufen, wie save() aufgerufen wurde, um den Zustand von QPainter wiederherzustellen.

[noexcept] QPainterStateGuard::QPainterStateGuard(QPainterStateGuard &&other)

Move-konstruiert einen Malerstaatwächter aus other.

[noexcept] QPainterStateGuard::~QPainterStateGuard()

Zerstört die Instanz QPainterStateGuard und ruft restore() so oft auf, wie save() aufgerufen wurde, um den Zustand von QPainter wiederherzustellen.

void QPainterStateGuard::restore()

Ruft QPainter::restore() auf, wenn der interne Speicher-/Wiederherstellungszähler größer als Null ist.

Hinweis: Diese Funktion wird in Debug-Builds aktiviert, wenn der Zähler bereits Null erreicht hat.

void QPainterStateGuard::save()

Ruft QPainter::save() auf und erhöht den internen Speicher-/Wiederherstellungszähler um eins.

[noexcept] void QPainterStateGuard::swap(QPainterStateGuard &other)

Tauscht die other mit diesem Maler State Guard. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

[noexcept] QPainterStateGuard &QPainterStateGuard::operator=(QPainterStateGuard &&other)

Verschieben - weist other dem Maler State Guard zu.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.