QTextObjectInterface Class
QTextObjectInterface クラスを使用すると、QTextDocument内でカスタムテキストオブジェクトを描画することができます。詳細...
| ヘッダー: | #include <QTextObjectInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
パブリック関数
| virtual | ~QTextObjectInterface() |
| virtual void | drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0 |
| virtual QSizeF | intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0 |
詳細な説明
テキストオブジェクトは、テキストドキュメント内の1つ以上の要素の構造を記述します。たとえば、HTMLからインポートされた画像は、テキストオブジェクトを使用して実装されています。テキストオブジェクトは、ドキュメントのレンダリング時に、その要素のレイアウトや描画を行う方法を認識しています。
Qtでは、カスタムobject type をQTextCharFormat に登録することで、ドキュメントにカスタムテキストオブジェクトを挿入することができます。また、この型に対してQTextObjectInterfaceを実装し、ドキュメントのQAbstractTextDocumentLayout とregistered で一致させる必要があります。QTextDocument のレンダリング中にこのオブジェクト型が検出されると、インターフェースのintrinsicSize()およびdrawObject()関数が呼び出されます。
以下のリストは、カスタムテキストオブジェクトをドキュメントに挿入するために必要な手順を説明しています:
- objectType を選択します。objectType は、QTextFormat::UserObject 以上の値を持つ整数です。
- QTextCharFormat オブジェクトを作成し、setObjectType()関数を使用してオブジェクトのタイプを選択したタイプに設定します。
- QTextObjectInterface クラスを実装します。
- QAbstractTextDocumentLayout::registerHandler() を、QTextObjectInterface サブクラスのインスタンスとともに呼び出し、オブジェクト型を登録します。
- 選択したオブジェクトタイプの前述の `QTextCharFormat ` を持つ `QChar::ObjectReplacementCharacter ` をドキュメントに挿入します。前述のように、置換文字が検出されるたびに、QTextFormat をパラメータとして、QTextObjectInterface の関数 `intrinsicSize()` および `drawObject()` が呼び出されます。
テキストオブジェクトを実装するクラスは、QObject とQTextObjectInterfaceの両方を継承する必要があります。QObject は、最初に継承されるクラスでなければなりません。例えば:
class SvgTextObject : public QObject, public QTextObjectInterface
{
Q_OBJECT
Q_INTERFACES(QTextObjectInterface)テキストオブジェクトのデータは通常、QTextCharFormat::setProperty() を使用してQTextCharFormat に格納され、その後QTextCharFormat::property() で取得されます。
警告:コピー および貼り付け操作では、カスタムテキストオブジェクトは無視されます。
「 QTextCharFormat 」および「QTextLayout 」も参照してください 。
メンバ関数のドキュメント
[virtual noexcept] QTextObjectInterface::~QTextObjectInterface()
QTextObjectInterface を削除します。
[pure virtual] void QTextObjectInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)
指定されたpainter を使用して、このテキストオブジェクトを描画します。
描画対象となる矩形のサイズ(rect )は、intrinsicSize() によって事前に計算されたサイズです。矩形の位置は、painter を基準としています。
また、そのドキュメント内のformat のドキュメント(doc )と位置(posInDocument )も取得できます。
intrinsicSize()も参照してください 。
[pure virtual] QSizeF QTextObjectInterface::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format)
intrinsicSize() 関数は、指定されたドキュメント (doc) 内の指定された位置 (posInDocument) にある、format で表されるテキストオブジェクトのサイズを返します。
計算されたサイズは、このformat に対するその後のdrawObject() の呼び出しで使用されます。
drawObject()も参照してください 。
© 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.