Sur cette page

QPainterStateGuard Class

La classe `QPainterStateGuard` est une classe de commodité RAII permettant d'équilibrer les appels à ` QPainter::save()` et ` QPainter::restore()`. En savoir plus...

En-tête : #include <QPainterStateGuard>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Depuis : Qt 6.9

Remarque : toutes les fonctions de cette classe sont réentrantes.

Fonctions publiques

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

Description détaillée

QPainterStateGuard doit être utilisé partout en remplacement de QPainter::save() afin de garantir que la fonction correspondante QPainter::restore() soit appelée à la fin de la routine de dessin, ce qui permet d’éviter tout déséquilibre entre les appels de ces deux fonctions.

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

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

Voir également QPainter.

Documentation des fonctions membres

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

Crée un objet `QPainterStateGuard` et appelle la méthode ` save()` sur ` painter ` si ` state ` est défini sur ` InitialState::Save ` (ce qui est la valeur par défaut). Lorsque l'objet `QPainterStateGuard` est détruit, la méthode ` restore()` est appelée autant de fois que la méthode ` save()` a été appelée afin de restaurer l'état de ` QPainter`.

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

Crée un garde d’état « painter » à partir de other.

[noexcept] QPainterStateGuard::~QPainterStateGuard()

Détruit l'instance de ` QPainterStateGuard ` et appelle ` restore()` autant de fois qu'` save()` a été appelée afin de restaurer l'état de ` QPainter`.

void QPainterStateGuard::restore()

Appelle la fonction QPainter::restore() si le compteur interne de sauvegarde/restauration est supérieur à zéro.

Remarque : cette fonction déclenche une assertion dans les versions de débogage si le compteur a déjà atteint zéro.

void QPainterStateGuard::save()

Appelle la fonction ` QPainter::save()` et incrémente de un le compteur interne de sauvegarde/restauration.

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

Remplace l'other e par ce garde d'État peintre. Cette opération est très rapide et ne rate jamais.

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

La commande « move » attribue la variable « other » à cette variable de garde d'état « painter ».

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