QStaticText Class
QStaticText クラスは、テキストとそのレイアウトがほとんど更新されない場合に、テキストの最適化された描画を可能にします。詳細...
ヘッダ | #include <QStaticText> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバのリスト
- QStaticText は暗黙的に共有されるクラスの一部です。
パブリック型
enum | PerformanceHint { ModerateCaching, AggressiveCaching } |
パブリック関数
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 |
詳細説明
QStaticText は、テキスト・ブロックのレイアウト・データをキャッシュする方法を提供し、QPainter::drawText() を使用するよりも効率的に描画できるようにします。
このクラスは主に、テキスト、そのフォント、およびペインター上の変換が、複数のペイントイベントにわたって静的である場合の最適化を提供します。テキストやそのレイアウトが繰り返しごとに変更される場合、QPainter::drawText() はより効率的な選択肢です。静的なテキストのレイアウトは、新しい状態を考慮して再計算されなければならないからです。
ペインターを翻訳しても、テキストのレイアウトが再計算されることはありませんが、drawStaticText() のパフォーマンスへの影響はごくわずかです。ペインターの変換やペインターのフォントの他の部分を変更すると、静的テキストのレイアウトが再計算されます。QStaticText を使用することによるパフォーマンスの利点を最大化するために、これはできるだけ避けるべきです。
また、drawStaticText() がサポートしているのはアフィン変換のみです。投影されたペインターに対して drawStaticText() を呼び出すと、通常の drawText() 呼び出しよりも若干パフォーマンスが低下するので、これは避けるべきです。
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; };
QStaticText クラスは、QPainter::drawText() の動作を模倣するために使用でき、また、QPainter::drawText() を境界のない矩形で呼び出すこともできます。
外接矩形が必要ない場合は、優先テキスト幅を設定せずに QStaticText オブジェクトを作成してください。その場合、テキストは1行を占めます。
QStaticText オブジェクトにテキスト幅を設定すると、テキストがバウンディングされます。テキストは、指定された幅を超える行がないようにフォーマットされます。QStaticTextに設定されたテキスト幅は、自動的にクリッピングには使われません。改行に加えてクリッピングを行うには、QPainter::setClipRect() を使用してください。テキストの位置はQPainter::drawStaticText() に渡される引数によって決定され、呼び出しごとに変更してもパフォーマンスへの影響は最小限です。
さらに便利なことに、QTextDocument でサポートされている HTML サブセットを使用して、テキストに書式を適用することができます。QStaticText は、Qt::mightBeRichText() を使用して入力テキストの形式を推測しようとし、この関数がtrue
を返した場合は、それをリッチ・テキストとして解釈します。QStaticText に、その内容をプレーン・テキストまたはリッチ・テキストのいずれかとして表示させるには、関数QStaticText::setTextFormat() を使用し、それぞれQt::PlainText およびQt::RichText を渡します。
QStaticTextが表現できるのはテキストだけなので、テキストのレイアウトや外観を変更するHTMLタグだけが尊重されます。例えば入力 HTML に画像を追加すると、画像はレイアウトの一部として含まれ、テキストグリフの位置に影響を与えますが、表示されることはありません。その結果、出力には画像と同じ大きさの空の領域ができます。同様に、テーブルを使用すると、テキストはテーブル形式でレイアウトされますが、ボーダーは描画されません。
静的テキストが初めて描画される場合、または静的テキストやペインターのフォントが前回描画されたときから変更されている場合、テキストのレイアウトは再計算されなければなりません。いくつかのペイントエンジンでは、ペインターのマトリックスを変更すると、レイアウトも再計算されます。特に、OpenGL2ペイントエンジン以外のエンジンでは、この現象が発生します。レイアウトの再計算は、それが発生するQPainter::drawStaticText() 呼び出しにオーバーヘッドを課します。paint イベントでこのオーバーヘッドを回避するには、prepare() を先に呼び出して、レイアウトが確実に計算されるようにします。
QPainter::drawText()、QPainter::drawStaticText()、QTextLayout 、およびQTextDocumentも参照のこと 。
メンバ型ドキュメント
enum QStaticText::PerformanceHint
この列挙は、QStaticText に設定できるさまざまなパフォーマンスヒントを示す。これらのヒントは、QStaticText が可能であれば追加のキャッシュを使用し、メモリを犠牲にしてパフォーマンスを向上させるべきであることを示すために使用できる。特に、QStaticText にパフォーマンスヒント AggressiveCaching を設定すると、OpenGL グラフィックシステムの使用時やQOpenGLWidget への描画時のパフォーマンスが向上する。
定数 | 値 | 説明 |
---|---|---|
QStaticText::ModerateCaching | 0 | 低いメモリコストで高いパフォーマンスを得るために基本的なキャッシングを行います。 |
QStaticText::AggressiveCaching | 1 | 利用可能な場合は、追加のキャッシングを使用します。これは、より高いメモリコストでパフォーマンスを向上させるかもしれません。 |
メンバー関数ドキュメント
QStaticText::QStaticText()
空の QStaticText を作成します。
[explicit]
QStaticText::QStaticText(const QString &text)
与えられたtext で QStaticText オブジェクトを構築します。
QStaticText::QStaticText(const QStaticText &other)
other のコピーである QStaticText オブジェクトを構築します。
[noexcept]
QStaticText::~QStaticText()
QStaticText を破壊する。
QStaticText::PerformanceHint QStaticText::performanceHint() const
どのパフォーマンスヒントがQStaticText に設定されているかを返す。
setPerformanceHint()も参照 。
void QStaticText::prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont())
実際の drawStaticText() 呼び出し時のオーバーヘッドを避けるため、与えられたmatrix と与えられたfont で描画されるQStaticText オブジェクトを準備する。
drawStaticText()が呼び出されると、QStaticText オブジェクトが前回描画されたときから変更されている部分があれば、QStaticText のレイアウトが再計算されます。また、ペインターのフォントがQStaticText が最後に描画されたときと同じでない場合や、OpenGL2 エンジン以外のペイントエンジンでは、静的テキストが最後に描画されたときからペインターのマトリックスが変更された場合にも、再計算されます。
変更後にQStaticText を初めて描画するときにレイアウトを作成するオーバーヘッドを避けるには、prepare() 関数を使用して、テキストを描画するときに使用すると予想されるmatrix とfont を渡します。
QPainter::setFont() およびQPainter::setWorldTransform()も参照してください 。
void QStaticText::setPerformanceHint(QStaticText::PerformanceHint performanceHint)
提供されたperformanceHint に従ってQStaticText のパフォーマンス・ヒントを設定する。performanceHint は、パフォーマンスを向上させるために内部でどの程度キャッシュを行うかをカスタマイズするために使用されます。
デフォルトはQStaticText::ModerateCaching です。
注意: この関数を使用すると、テキストのレイアウトを再計算する必要があります。
performanceHint()も参照してください 。
void QStaticText::setText(const QString &text)
QStaticText のテキストをtext に設定します。
注意: この関数を使用すると、テキストのレイアウトの再計算が必要になります。
text()も参照 。
void QStaticText::setTextFormat(Qt::TextFormat textFormat)
QStaticText のテキスト書式をtextFormat に設定します。textFormat がQt::AutoText に設定されている場合(デフォルト)、テキストの書式は関数Qt::mightBeRichText() を用いて決定されようとします。テ キ ス ト の書式がQt::PlainText の場合、 テ キ ス ト はそのまま表示 さ れますが、 書式がQt::RichText の場合、 テ キ ス ト は HTML と し て解釈 さ れます。 テ キ ス ト の フ ォ ン ト ・ 色 ・ レ イ ア ウ ト を変更す る HTML タ グにはQStaticText が対応 し てい ます。
注意: この関数は、テキストのレイアウトを再計算する必要があります。
textFormat()、setText()、text()も参照 。
void QStaticText::setTextOption(const QTextOption &textOption)
レ イ ア ウ ト 処理を制御す る テ キ ス ト オプシ ョ ン構造を、 与えられたtextOption に設定 し ます。
textOption()も参照 。
void QStaticText::setTextWidth(qreal textWidth)
このQStaticText の幅を設定します。テキストが指定された幅より広い場合、テキストは複数行に分割され、縦に伸びます。テ キ ス ト が複数行に分割で き ない と き は、 指定 し たtextWidth よ り も 大き く な り ます。
優先テ キ ス ト 幅を負数に設定す る と 、 テ キ ス ト は非束縛にな り ます。
テ キ ス ト の実際のサ イ ズ を取得す る にはsize ()を用います。
注意: この関数を使用すると、テキストのレイアウトの再計算が必要になります。
QSizeF QStaticText::size() const
このQStaticText の外接矩形のサイズを返します。
textWidth()も参照 。
[noexcept]
void QStaticText::swap(QStaticText &other)
この静的テキスト・インスタンスをother と交換する。この操作は非常に高速で、失敗することはない。
QString QStaticText::text() const
QStaticText のテキストを返す。
setText()も参照 。
Qt::TextFormat QStaticText::textFormat() const
QStaticText のテキスト・フォーマットを返す。
setTextFormat()、setText() およびtext()も参照 。
QTextOption QStaticText::textOption() const
レ イ ア ウ ト 処理を制御す る ために用い ら れてい る カ レ ン ト テキス ト オプシ ョ ン を返 し ます。
setTextOption()も参照 ください。
qreal QStaticText::textWidth() const
このQStaticText の優先幅を返す。
setTextWidth()も参照 。
bool QStaticText::operator!=(const QStaticText &other) const
other をこのQStaticText と比較する。テキスト、フォント、または最大サイズが異なる場合はtrue
を返します。
QStaticText &QStaticText::operator=(const QStaticText &other)
QStaticText にother を割り当てる。
bool QStaticText::operator==(const QStaticText &other) const
other をこのQStaticText と比較する。テキスト、フォント、テキスト幅が等しい場合はtrue
を返す。
© 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.