Auf dieser Seite

QPainterStateGuard Class

Der `QPainterStateGuard` ist eine RAII-Hilfsklasse für ausgewogene Aufrufe von ` QPainter::save()` und ` QPainter::restore()`. Mehr...

Header: #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 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)

Ausführliche Beschreibung

QPainterStateGuard sollte überall als Ersatz für QPainter::save() verwendet werden, um sicherzustellen, dass die entsprechende Funktion QPainter::restore() nach Beendigung der Zeichenroutine aufgerufen wird, damit ein Ungleichgewicht zwischen den Aufrufen dieser beiden Funktionen vermieden wird.

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)

Erstellt ein `QPainterStateGuard`-Objekt und ruft ` save()` auf ` painter ` auf, sofern ` state ` auf ` InitialState::Save ` gesetzt ist (was der Standardwert ist). Wenn das `QPainterStateGuard`-Objekt zerstört wird, wird ` restore()` so oft aufgerufen, wie ` save()` aufgerufen wurde, um den Zustand von ` QPainter` wiederherzustellen.

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

Erstellt einen „Painter State Guard“ aus „ other “.

[noexcept] QPainterStateGuard::~QPainterStateGuard()

Löscht die Instanz von „ 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 löst in Debug-Builds einen Assert-Fehler aus, wenn der Zähler bereits den Wert 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)

Ersetzt den „ other “ durch diesen „Painter State Guard“. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

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

Weist dieser „Painter State Guard“ die Variable „ other “ zu.

© 2026 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.