Sur cette page

QStaticText Class

La classe QStaticText permet d'optimiser le dessin du texte lorsque le texte et sa mise en page sont rarement mis à jour. Plus d'informations...

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

Types publics

enum PerformanceHint { ModerateCaching, AggressiveCaching }

Fonctions publiques

QStaticText()
QStaticText(const QString &text)
QStaticText(const QStaticText &other)
~QStaticText()
QStaticText::PerformanceHint performanceHint() const
void prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont())
void setPerformanceHint(QStaticText::PerformanceHint performanceHint)
void setText(const QString &text)
void setTextFormat(Qt::TextFormat textFormat)
void setTextOption(const QTextOption &textOption)
void setTextWidth(qreal textWidth)
QSizeF size() const
void swap(QStaticText &other)
QString text() const
Qt::TextFormat textFormat() const
QTextOption textOption() const
qreal textWidth() const
bool operator!=(const QStaticText &other) const
QStaticText &operator=(const QStaticText &other)
bool operator==(const QStaticText &other) const

Description détaillée

QStaticText permet de mettre en cache les données de mise en page d'un bloc de texte afin qu'il puisse être dessiné plus efficacement qu'en utilisant QPainter::drawText() où les informations de mise en page sont recalculées à chaque appel.

La classe fournit principalement une optimisation pour les cas où le texte, sa police et les transformations sur le peintre sont statiques sur plusieurs événements de peinture. Si le texte ou sa disposition est modifié à chaque itération, QPainter::drawText() est l'alternative la plus efficace, puisque la disposition du texte statique devrait être recalculée pour prendre en compte le nouvel état.

La traduction du peintre n'entraînera pas le recalcul de la disposition du texte, mais aura un très faible impact sur les performances de drawStaticText(). La modification de toute autre partie de la transformation du peintre ou de la police du peintre entraînera le recalcul de la disposition du texte statique. Cela doit être évité le plus souvent possible afin de maximiser les performances de l'utilisation de QStaticText.

De plus, seules les transformations affines sont supportées par drawStaticText(). L'appel à drawStaticText() sur un peintre projeté sera légèrement moins performant que l'appel à drawText() classique, il est donc préférable de l'éviter.

class MyWidget: public QWidget
{
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent), m_staticText("This is static text")

protected:
    void paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
        painter.drawStaticText(0, 0, m_staticText);
    }

private:
    QStaticText m_staticText;
};

La classe QStaticText peut être utilisée pour imiter le comportement de QPainter::drawText() à un point spécifique sans limites, ainsi que lorsque QPainter::drawText() est appelé avec un rectangle de délimitation.

Si un rectangle de délimitation n'est pas nécessaire, créez un objet QStaticText sans définir de largeur de texte préférée. Le texte occupera alors une seule ligne.

Si vous définissez une largeur de texte pour l'objet QStaticText, le texte sera délimité. Le texte sera formaté de manière à ce qu'aucune ligne ne dépasse la largeur donnée. La largeur de texte définie pour QStaticText ne sera pas automatiquement utilisée pour l'écrêtage. Pour obtenir une coupure en plus des sauts de ligne, utilisez QPainter::setClipRect(). La position du texte est déterminée par l'argument passé à QPainter::drawStaticText() et peut changer d'un appel à l'autre avec un impact minimal sur les performances.

Pour plus de commodité, il est possible d'appliquer un formatage au texte en utilisant le sous-ensemble HTML pris en charge par QTextDocument. QStaticText tentera de deviner le format du texte d'entrée en utilisant Qt::mightBeRichText(), et l'interprétera comme du texte riche si cette fonction renvoie true. Pour forcer QStaticText à afficher son contenu sous forme de texte brut ou de texte enrichi, utilisez la fonction QStaticText::setTextFormat() et transmettez respectivement Qt::PlainText et Qt::RichText.

QStaticText ne peut représenter que du texte, de sorte que seules les balises HTML qui modifient la disposition ou l'apparence du texte seront respectées. L'ajout d'une image au code HTML d'entrée, par exemple, entraînera l'inclusion de l'image dans la mise en page, ce qui affectera la position des glyphes du texte, mais elle ne sera pas affichée. Le résultat sera une zone vide de la taille de l'image dans la sortie. De même, l'utilisation de tableaux entraînera la mise en page du texte au format tableau, mais les bordures ne seront pas dessinées.

Si c'est la première fois que le texte statique est dessiné, ou si le texte statique ou la police du peintre ont été modifiés depuis la dernière fois qu'ils ont été dessinés, la disposition du texte doit être recalculée. Sur certains moteurs de peinture, la modification de la matrice du peintre entraînera également le recalcul de la disposition. En particulier, cela se produit pour tous les moteurs à l'exception du moteur de peinture OpenGL2. Le recalcul de la disposition imposera un surcoût à l'appel de QPainter::drawStaticText() où il se produit. Pour éviter cette surcharge dans l'événement de peinture, vous pouvez appeler prepare() à l'avance pour vous assurer que la disposition est calculée.

Voir également QPainter::drawText(), QPainter::drawStaticText(), QTextLayout, et QTextDocument.

Documentation sur les types de membres

enum QStaticText::PerformanceHint

Cette liste énumère les différents indices de performance qui peuvent être définis sur le site QStaticText. Ces indices peuvent être utilisés pour indiquer que le site QStaticText doit utiliser des caches supplémentaires, si possible, pour améliorer les performances au détriment de la mémoire. En particulier, l'activation de l'indice de performance AggressiveCaching sur QStaticText améliorera les performances lors de l'utilisation du système graphique OpenGL ou lors de l'affichage sur QOpenGLWidget.

ConstanteValeurDescription de la constante
QStaticText::ModerateCaching0Effectue une mise en cache de base pour des performances élevées à un faible coût de mémoire.
QStaticText::AggressiveCaching1Utiliser la mise en cache supplémentaire lorsqu'elle est disponible. Cela peut améliorer les performances pour un coût de mémoire plus élevé.

Documentation des fonctions membres

QStaticText::QStaticText()

Construit un QStaticText vide

[explicit] QStaticText::QStaticText(const QString &text)

Construit un objet QStaticText avec l'adresse text.

QStaticText::QStaticText(const QStaticText &other)

Construit un objet QStaticText qui est une copie de other.

[noexcept] QStaticText::~QStaticText()

Détruit le site QStaticText.

QStaticText::PerformanceHint QStaticText::performanceHint() const

Renvoie l'indice de performance défini pour le site QStaticText.

Voir aussi setPerformanceHint().

void QStaticText::prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont())

Prépare l'objet QStaticText à être peint avec les objets matrix et font afin d'éviter les surcharges lors de l'appel à la fonction drawStaticText().

Lorsque drawStaticText() est appelé, la disposition de l'objet QStaticText est recalculée si une partie de l'objet QStaticText a été modifiée depuis la dernière fois qu'elle a été dessinée. Elle sera également recalculée si la police du peintre n'est pas la même que celle utilisée lors du dernier dessin de QStaticText, ou, sur tout autre moteur de peinture que le moteur OpenGL2, si la matrice du peintre a été modifiée depuis que le texte statique a été dessiné pour la dernière fois.

Pour éviter d'avoir à créer la mise en page la première fois que vous dessinez le site QStaticText après l'avoir modifié, vous pouvez utiliser la fonction prepare() et lui transmettre les adresses matrix et font que vous prévoyez d'utiliser pour dessiner le texte.

Voir également QPainter::setFont() et QPainter::setWorldTransform().

void QStaticText::setPerformanceHint(QStaticText::PerformanceHint performanceHint)

Définit l'indice de performance de QStaticText en fonction de performanceHint fourni. performanceHint est utilisé pour personnaliser le niveau de mise en cache interne afin d'améliorer les performances.

La valeur par défaut est QStaticText::ModerateCaching.

Remarque : cette fonction entraîne un recalcul de la mise en page du texte.

Voir aussi performanceHint().

void QStaticText::setText(const QString &text)

Fixe le texte du site QStaticText à text.

Remarque : cette fonction nécessite un recalcul de la mise en page du texte.

Voir aussi text().

void QStaticText::setTextFormat(Qt::TextFormat textFormat)

Définit le format de texte de QStaticText à textFormat. Si textFormat est défini à Qt::AutoText (par défaut), le format du texte tentera d'être déterminé à l'aide de la fonction Qt::mightBeRichText(). Si le format du texte est Qt::PlainText, le texte sera affiché tel quel, alors qu'il sera interprété comme du HTML si le format est Qt::RichText. Les balises HTML qui modifient la police du texte, sa couleur ou sa mise en page sont prises en charge par QStaticText.

Remarque : cette fonction nécessite un recalcul de la mise en page du texte.

Voir également textFormat(), setText() et text().

void QStaticText::setTextOption(const QTextOption &textOption)

Définit la structure d'option de texte qui contrôle le processus de mise en page à l'adresse textOption.

Voir aussi textOption().

void QStaticText::setTextWidth(qreal textWidth)

Définit la largeur préférée pour ce site QStaticText. Si le texte est plus large que la largeur spécifiée, il sera divisé en plusieurs lignes et s'étendra verticalement. Si le texte ne peut pas être divisé en plusieurs lignes, il sera plus grand que la largeur spécifiée textWidth.

Si la largeur préférée du texte est définie sur un nombre négatif, le texte ne sera pas délimité.

Utilisez size() pour obtenir la taille réelle du texte.

Remarque : cette fonction nécessite un nouveau calcul de la mise en page du texte.

Voir également textWidth() et size().

QSizeF QStaticText::size() const

Renvoie la taille du rectangle de délimitation pour cette QStaticText.

Voir également textWidth().

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

Remplace cette instance de texte statique par other. Cette opération est très rapide et n'échoue jamais.

QString QStaticText::text() const

Renvoie le texte de QStaticText.

Voir aussi setText().

Qt::TextFormat QStaticText::textFormat() const

Renvoie le format de texte de la page QStaticText.

Voir aussi setTextFormat(), setText(), et text().

QTextOption QStaticText::textOption() const

Renvoie l'option de texte courante utilisée pour contrôler le processus de mise en page.

Voir aussi setTextOption().

qreal QStaticText::textWidth() const

Renvoie la largeur préférée pour cette QStaticText.

Voir aussi setTextWidth().

bool QStaticText::operator!=(const QStaticText &other) const

Compare other à QStaticText. Renvoie true si les textes, les polices ou les tailles maximales sont différents.

QStaticText &QStaticText::operator=(const QStaticText &other)

Attribue other à ce QStaticText.

bool QStaticText::operator==(const QStaticText &other) const

Compare other à QStaticText. Renvoie true si les textes, les polices et les largeurs de texte sont identiques.

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