QStaticText Class

QStaticText クラスは、テキストとそのレイアウトがほとんど更新されない場合に、テキストの最適化された描画を可能にします。詳細...

Header: #include <QStaticText>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

パブリック型

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::ModerateCaching0低いメモリコストで高いパフォーマンスを得るために基本的なキャッシングを行います。
QStaticText::AggressiveCaching1利用可能な場合は、追加のキャッシングを使用します。これは、より高いメモリコストでパフォーマンスを向上させるかもしれません。

メンバ関数ドキュメント

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() 関数を使用して、テキストを描画するときに使用すると予想されるmatrixfont を渡します。

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 に設定します。textFormatQt::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 ()を用います。

注意: この関数を使用すると、テキストのレイアウトの再計算が必要になります。

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)

other をこのQStaticText に代入します。

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

other をこのQStaticText と比較する。テキスト、フォント、テキスト幅が等しい場合はtrue を返します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。