QStaticText Class
Die Klasse QStaticText ermöglicht ein optimiertes Zeichnen von Text, wenn der Text und sein Layout selten aktualisiert werden. Mehr...
Kopfzeile: | #include <QStaticText> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QStaticText ist Teil von Implicitly Shared Classes.
Öffentliche Typen
enum | PerformanceHint { ModerateCaching, AggressiveCaching } |
Öffentliche Funktionen
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 |
Detaillierte Beschreibung
QStaticText bietet eine Möglichkeit, Layoutdaten für einen Textblock zwischenzuspeichern, so dass er effizienter gezeichnet werden kann als mit QPainter::drawText(), bei dem die Layoutinformationen bei jedem Aufruf neu berechnet werden.
Die Klasse bietet in erster Linie eine Optimierung für Fälle, in denen der Text, seine Schrift und die Transformationen auf dem Painter über mehrere Paint-Ereignisse statisch sind. Wenn der Text oder sein Layout bei jeder Iteration geändert wird, ist QPainter::drawText() die effizientere Alternative, da das Layout des statischen Textes neu berechnet werden müsste, um den neuen Zustand zu berücksichtigen.
Das Übersetzen des Painters führt nicht dazu, dass das Layout des Textes neu berechnet wird, hat aber einen sehr geringen Einfluss auf die Leistung von drawStaticText(). Das Ändern anderer Teile der Transformation des Painters oder der Schriftart des Painters führt zu einer Neuberechnung des Layouts des statischen Textes. Dies sollte so oft wie möglich vermieden werden, um den Leistungsvorteil der Verwendung von QStaticText zu maximieren.
Darüber hinaus werden nur affine Transformationen von drawStaticText() unterstützt. Der Aufruf von drawStaticText() auf einem projizierten Painter wird etwas schlechter abschneiden als der reguläre drawText() Aufruf, daher sollte dies vermieden werden.
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; };
Die QStaticText Klasse kann verwendet werden, um das Verhalten von QPainter::drawText() auf einen bestimmten Punkt ohne Begrenzungen zu imitieren, und auch wenn QPainter::drawText() mit einem begrenzten Rechteck aufgerufen wird.
Wenn kein begrenzendes Rechteck erforderlich ist, erstellen Sie ein QStaticText-Objekt, ohne eine bevorzugte Textbreite festzulegen. Der Text wird dann eine einzige Zeile einnehmen.
Wenn Sie eine Textbreite für das QStaticText-Objekt festlegen, wird der Text dadurch begrenzt. Der Text wird so formatiert, dass keine Zeile die angegebene Breite überschreitet. Die für QStaticText eingestellte Textbreite wird nicht automatisch für das Clipping verwendet. Um zusätzlich zum Zeilenumbruch ein Clipping zu erreichen, verwenden Sie QPainter::setClipRect(). Die Position des Textes wird durch das an QPainter::drawStaticText() übergebene Argument bestimmt und kann sich von Aufruf zu Aufruf mit minimalen Auswirkungen auf die Leistung ändern.
Für zusätzlichen Komfort ist es möglich, Formatierungen auf den Text anzuwenden, indem man die von QTextDocument unterstützte HTML-Untermenge verwendet. QStaticText versucht, das Format des Eingabetextes mit Qt::mightBeRichText() zu erraten und interpretiert ihn als Rich Text, wenn diese Funktion true
zurückgibt. Um QStaticText zu zwingen, seinen Inhalt entweder als reinen Text oder als Rich Text anzuzeigen, verwenden Sie die Funktion QStaticText::setTextFormat() und übergeben Sie Qt::PlainText bzw. Qt::RichText.
QStaticText kann nur Text darstellen, so dass nur HTML-Tags, die das Layout oder das Aussehen des Textes verändern, berücksichtigt werden. Das Hinzufügen eines Bildes zur HTML-Eingabe führt beispielsweise dazu, dass das Bild als Teil des Layouts einbezogen wird und die Positionen der Textglyphen beeinflusst, aber es wird nicht angezeigt. Das Ergebnis ist ein leerer Bereich in der Größe des Bildes in der Ausgabe. In ähnlicher Weise führt die Verwendung von Tabellen dazu, dass der Text im Tabellenformat angelegt wird, aber die Ränder werden nicht gezeichnet.
Wenn der statische Text zum ersten Mal gezeichnet wird, oder wenn der statische Text oder die Schriftart des Malers seit dem letzten Mal geändert wurde, muss das Layout des Textes neu berechnet werden. Bei einigen Paint-Engines führt eine Änderung der Matrix des Malers ebenfalls zu einer Neuberechnung des Layouts. Dies gilt insbesondere für alle Engines außer der OpenGL2-Paint-Engine. Die Neuberechnung des Layouts führt zu einem Overhead beim Aufruf von QPainter::drawStaticText(), wo sie stattfindet. Um diesen Overhead im Paint-Ereignis zu vermeiden, können Sie prepare() vorzeitig aufrufen, um sicherzustellen, dass das Layout berechnet wird.
Siehe auch QPainter::drawText(), QPainter::drawStaticText(), QTextLayout, und QTextDocument.
Dokumentation der Mitgliedstypen
enum QStaticText::PerformanceHint
Diese Aufzählung enthält die verschiedenen Leistungshinweise, die auf QStaticText gesetzt werden können. Diese Hinweise können verwendet werden, um anzuzeigen, dass QStaticText zusätzliche Caches verwenden sollte, wenn möglich, um die Leistung auf Kosten des Speichers zu verbessern. Insbesondere das Setzen des Performance-Hinweises AggressiveCaching auf der QStaticText verbessert die Leistung bei der Verwendung des OpenGL-Grafiksystems oder beim Zeichnen auf einer QOpenGLWidget.
Konstante | Wert | Beschreibung |
---|---|---|
QStaticText::ModerateCaching | 0 | Führt eine grundlegende Zwischenspeicherung für hohe Leistung bei geringen Speicherkosten durch. |
QStaticText::AggressiveCaching | 1 | Verwenden Sie zusätzliches Caching, wenn verfügbar. Dies kann die Leistung bei höheren Speicherkosten verbessern. |
Dokumentation der Mitgliedsfunktionen
QStaticText::QStaticText()
Konstruiert einen leeren QStaticText
[explicit]
QStaticText::QStaticText(const QString &text)
Konstruiert ein QStaticText-Objekt mit dem angegebenen text.
QStaticText::QStaticText(const QStaticText &other)
Konstruiert ein QStaticText-Objekt, das eine Kopie von other ist.
[noexcept]
QStaticText::~QStaticText()
Zerstört die QStaticText.
QStaticText::PerformanceHint QStaticText::performanceHint() const
Gibt zurück, welcher Performance-Hinweis für die QStaticText gesetzt ist.
Siehe auch setPerformanceHint().
void QStaticText::prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont())
Bereitet das Objekt QStaticText darauf vor, mit dem angegebenen matrix und dem angegebenen font gezeichnet zu werden, um Overhead zu vermeiden, wenn der eigentliche drawStaticText()-Aufruf erfolgt.
Wenn drawStaticText() aufgerufen wird, wird das Layout von QStaticText neu berechnet, wenn sich irgendein Teil des QStaticText Objekts seit dem letzten Mal, als es gezeichnet wurde, verändert hat. Es wird auch neu berechnet, wenn die Schriftart des Malers nicht die gleiche ist wie beim letzten Zeichnen von QStaticText, oder, auf jeder anderen Paint-Engine als der OpenGL2-Engine, wenn die Matrix des Malers seit dem letzten Zeichnen des statischen Textes geändert wurde.
Um den Overhead der Erstellung des Layouts beim ersten Zeichnen von QStaticText nach Änderungen zu vermeiden, können Sie die Funktion prepare() verwenden und die matrix und font übergeben, die Sie beim Zeichnen des Textes verwenden möchten.
Siehe auch QPainter::setFont() und QPainter::setWorldTransform().
void QStaticText::setPerformanceHint(QStaticText::PerformanceHint performanceHint)
Legt den Leistungshinweis von QStaticText entsprechend dem angegebenen performanceHint fest. Die performanceHint wird verwendet, um den Umfang der internen Zwischenspeicherung zur Verbesserung der Leistung anzupassen.
Der Standardwert ist QStaticText::ModerateCaching.
Hinweis: Diese Funktion führt dazu, dass das Layout des Textes neu berechnet werden muss.
Siehe auch performanceHint().
void QStaticText::setText(const QString &text)
Setzt den Text der Seite QStaticText auf text.
Hinweis: Diese Funktion führt dazu, dass das Layout des Textes neu berechnet werden muss.
Siehe auch text().
void QStaticText::setTextFormat(Qt::TextFormat textFormat)
Setzt das Textformat von QStaticText auf textFormat. Wenn textFormat auf Qt::AutoText (Standardeinstellung) gesetzt ist, wird versucht, das Format des Textes mit der Funktion Qt::mightBeRichText() zu ermitteln. Wenn das Textformat Qt::PlainText ist, wird der Text so angezeigt, wie er ist, während er als HTML interpretiert wird, wenn das Format Qt::RichText ist. HTML-Tags, die die Schriftart des Textes, seine Farbe oder sein Layout verändern, werden von QStaticText unterstützt.
Hinweis: Diese Funktion führt dazu, dass das Layout des Textes neu berechnet werden muss.
Siehe auch textFormat(), setText(), und text().
void QStaticText::setTextOption(const QTextOption &textOption)
Setzt die Textoptionsstruktur, die den Layoutprozess steuert, auf die angegebene textOption.
Siehe auch textOption().
void QStaticText::setTextWidth(qreal textWidth)
Legt die bevorzugte Breite für diese QStaticText fest. Wenn der Text breiter ist als die angegebene Breite, wird er in mehrere Zeilen aufgeteilt und wächst vertikal. Wenn der Text nicht in mehrere Zeilen aufgeteilt werden kann, wird er größer als die angegebene textWidth.
Wenn Sie die bevorzugte Textbreite auf eine negative Zahl setzen, wird der Text nicht begrenzt.
Verwenden Sie size(), um die tatsächliche Größe des Textes zu ermitteln.
Hinweis: Diese Funktion führt dazu, dass das Layout des Textes neu berechnet werden muss.
Siehe auch textWidth() und size().
QSizeF QStaticText::size() const
Gibt die Größe des Begrenzungsrechtecks für dieses QStaticText zurück.
Siehe auch textWidth().
[noexcept]
void QStaticText::swap(QStaticText &other)
Tauscht diese statische Textinstanz mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
QString QStaticText::text() const
Gibt den Text der Seite QStaticText zurück.
Siehe auch setText().
Qt::TextFormat QStaticText::textFormat() const
Gibt das Textformat von QStaticText zurück.
Siehe auch setTextFormat(), setText(), und text().
QTextOption QStaticText::textOption() const
Gibt die aktuelle Textoption zurück, die zur Steuerung des Layout-Prozesses verwendet wird.
Siehe auch setTextOption().
qreal QStaticText::textWidth() const
Gibt die bevorzugte Breite für diese QStaticText zurück.
Siehe auch setTextWidth().
bool QStaticText::operator!=(const QStaticText &other) const
Vergleicht other mit dieser QStaticText. Gibt true
zurück, wenn die Texte, Schriftarten oder maximalen Größen unterschiedlich sind.
QStaticText &QStaticText::operator=(const QStaticText &other)
Weist other dieser QStaticText zu.
bool QStaticText::operator==(const QStaticText &other) const
Vergleicht other mit diesem QStaticText. Gibt true
zurück, wenn die Texte, Schriftarten und Textbreiten gleich sind.
© 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.