QAbstractTextDocumentLayout Class
QAbstractTextDocumentLayout クラスは、QTextDocuments 用のカスタムレイアウトを実装するための抽象基底クラスです。詳細...
ヘッダー | #include <QAbstractTextDocumentLayout> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
を継承する: | QObject |
継承元: |
- 継承したメンバを含む、すべてのメンバのリスト
- QAbstractTextDocumentLayoutはリッチテキスト処理APIの一部です。
注意:このクラスのすべての関数はリエントラントです。
パブリック型
struct | PaintContext |
struct | Selection |
パブリック関数
QAbstractTextDocumentLayout(QTextDocument *document) | |
QString | anchorAt(const QPointF &position) const |
virtual QRectF | blockBoundingRect(const QTextBlock &block) const = 0 |
QTextBlock | blockWithMarkerAt(const QPointF &pos) const |
QTextDocument * | document() const |
virtual QSizeF | documentSize() const = 0 |
virtual void | draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0 |
QTextFormat | formatAt(const QPointF &pos) const |
virtual QRectF | frameBoundingRect(QTextFrame *frame) const = 0 |
QTextObjectInterface * | handlerForObject(int objectType) const |
virtual int | hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0 |
QString | imageAt(const QPointF &pos) const |
virtual int | pageCount() const = 0 |
QPaintDevice * | paintDevice() const |
void | registerHandler(int objectType, QObject *component) |
void | setPaintDevice(QPaintDevice *device) |
void | unregisterHandler(int objectType, QObject *component = nullptr) |
シグナル
void | documentSizeChanged(const QSizeF &newSize) |
void | pageCountChanged(int newPages) |
void | update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.)) |
void | updateBlock(const QTextBlock &block) |
プロテクト関数
virtual void | documentChanged(int position, int charsRemoved, int charsAdded) = 0 |
virtual void | drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format) |
QTextCharFormat | format(int position) |
virtual void | positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) |
virtual void | resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) |
詳細説明
Qt が提供する標準のレイアウトは、インライン画像、リスト、テーブルを含む単純なワープロ処理を扱うことができます。
ワードプロセッサや DTP アプリケーションなど、アプリケーションによっては Qt のレイアウトエンジンが提供する以上の機能が必要になる場合があります。
QAbstractTextDocumentLayout サブクラスのインスタンスは、setDocumentLayout() 関数でQTextDocument オブジェクトにインストールできます。
QTextDocument にカスタムオブジェクトを挿入することができます。詳細はQTextObjectInterface クラスの説明を参照してください。
QTextObjectInterfaceも参照してください 。
メンバ関数の説明
[explicit]
QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)
与えられたdocument に対 し て、 新規テ キ ス ト 文書レ イ ア ウ ト を作成 し ます。
QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const
指定されたposition のアンカーへの参照を返し、その点にアンカーが存在しない場合は空文字列を返す。
[pure virtual]
QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
block の外接矩形を返す。
QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const
与えられた位置pos にmarker があるブロック(おそらくリストアイテム)を返す。
QTextDocument *QAbstractTextDocumentLayout::document() const
このレイアウトが操作されているテキストドキュメントを返します。
[pure virtual protected]
void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)
この関数は、文書の内容が変更されるたびに呼び出される。変更は、テキストが挿入されたり、削除されたり、あるいはこの2つが組み合わされたときに発生する。変更の開始文字位置、文書から削除された文字数、追加された文字数に対応するposition 、charsRemoved 、charsAdded で指定されます。
たとえば、空の文書に「Hello」というテキストを挿入する場合、charsRemoved は0、charsAdded は5(文字列の長さ)になります。
テ キ ス ト の置き換えは、 削除 と 挿入の組み合わせです。たとえば、テキスト "Hello "が "Hi "に置き換えられると、charsRemoved は5、charsAdded は2になります。
QAbstractTextDocumentLayout のサブクラスでは、これは中心的な機能で、文書内容をレイアウトして配置する作業の大部分がここで行われます。
例えば、テキストのブロックを並べるだけのサブクラスでは、この関数の実装は次のようにしなければならない:
- 提供されたパラメータを使用して、変更されたQTextBlock(s) のリストを決定する。
- 各QTextBlock オブジェクトの対応するQTextLayout オブジェクトを処理する必要があります。QTextBlock::layout() 関数を使用して、QTextBlock のレイアウトにアクセスできます。この処理では、ドキュメントのページサイズを考慮する必要があります。
- 総ページ数が変更された場合、pageCountChanged() シグナルを発する。
- 総サイズが変更された場合は、documentSizeChanged ()シグナルを発する。
- update() シグナルは、レイアウト内の再描画が必要な領域の再描画をスケジュールするために 発せられるべきである。
QTextLayoutも参照のこと 。
[pure virtual]
QSizeF QAbstractTextDocumentLayout::documentSize() const
ドキュメントのレイアウトの合計サイズを返します。
この情報は、表示ウィジェットがスクロールバーを正しく更新するために使用することができます。
documentSizeChanged() およびQTextDocument::pageSizeも参照して ください。
[signal]
void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)
このシグナルは、ドキュメントのレイアウトサイズがnewSize に変更されたときに発行されます。
QAbstractTextDocumentLayout のサブクラスは、ドキュメント全体のレイアウトサイズが変更されたときにこのシグナルを発するべきです。このシグナルは、テキストドキュメントを表示するウィジェットにとって便利です。
documentSize()も参照してください 。
[pure virtual]
void QAbstractTextDocumentLayout::draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context)
与えられたcontext を用いて、与えられたpainter でレイアウトを描画します。
[virtual protected]
void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
この関数は、rect で指定された矩形内に、指定されたテキストformat を用いて、与えられたpainter を持つインラインオブジェクトobject を描画するために呼び出される。
posInDocument は、ドキュメント内でのオブジェクトの位置を指定します。
デフォルトの実装では、オブジェクト・ハンドラで drawObject() を呼び出します。この関数は Qt 内でのみ呼び出されます。サブクラスは、インライン・オブジェクトの描画をカスタマイズするために、この関数を再実装することができます。
draw()も参照してください 。
[protected]
QTextCharFormat QAbstractTextDocumentLayout::format(int position)
与えられたposition で適用可能な文字書式を返す。
QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const
与えられた位置のテキストフォーマットを返すpos 。
[pure virtual]
QRectF QAbstractTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const
frame の外接矩形を返す。
QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectType) const
与えられたobjectType のオブジェクトのハンドラを返します。
[pure virtual]
int QAbstractTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const
指定されたaccuracy で、指定されたpoint のカーソル位置を返す。有効なカーソル位置が見つからない場合は -1 を返す。
QString QAbstractTextDocumentLayout::imageAt(const QPointF &pos) const
与えられた位置pos にある画像のソースを返します。 その位置に画像が存在しない場合は空文字列を返します。
[pure virtual]
int QAbstractTextDocumentLayout::pageCount() const
レイアウトに含まれるページ数を返します。
pageCountChanged()も参照 ください。
[signal]
void QAbstractTextDocumentLayout::pageCountChanged(int newPages)
このシグナルは、レイアウト内のページ数が変更されたときに発せられます。newPages は更新されたページ数です。
QAbstractTextDocumentLayout のサブクラスは、レイアウト内のページ数が変更されたときにこのシグナルを発する必要があります。ページ数の変更は、レイアウトやドキュメントのコンテンツ自体の変更によって発生します。
pageCount()も参照してください 。
QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const
ドキュメントのレイアウトのレンダリングに使用したペイントデバイスを返します。
setPaintDevice()も参照 ください。
[virtual protected]
void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
与えられたテキストformat を使ってインラインオブジェクトitem をレイアウトします。
posInDocument は、ドキュメント内でのオブジェクトの位置を指定します。
デフォルトの実装では何もしません。この関数は Qt 内でのみ呼び出されます。サブクラスは、インラインオブジェクトの位置をカスタマイズするために、この関数を再実装することができます。
drawInlineObject()も参照してください 。
void QAbstractTextDocumentLayout::registerHandler(int objectType, QObject *component)
与えられたcomponent を、与えられたobjectType の項目のハンドラとして登録する。
注意: registerHandler() は、各オブジェクト・タイプに対して 1 回呼び出す必要がある。こ れは、 同 じ オブジ ェ ク ト タ イ プの複数の置換キ ャ ラ ク タ に対す る ハン ド ラ は 1 つだけ と い う こ と を意味 し ます。
テ キ ス ト 文書レ イ ア ウ ト はcomponent
の所有権を取 り ません。
[virtual protected]
void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
テキス トformat に対応する イ ン ラ イ ンオブジ ェ ク トitem のサ イ ズ を設定 し ます。
posInDocument は、ドキュメント内でのオブジェクトの位置を指定します。
デフォルトの実装では、item のサイズをオブジェクトハンドラの intrinsicSize() 関数が返すサイズに変更します。この関数は Qt 内でのみ呼び出されます。サブクラスはこの関数を再実装して、インラインオブジェクトのリサイズをカスタマイズできます。
void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)
ドキュメントのレイアウトのレンダリングに使われるペイントデバイスを、 与えられたdevice に設定します。
paintDevice()も参照 。
void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)
与えられたobjectType のアイテムのハンドラとして、与えられたcomponent の登録を解除する。component が指定されていない場合は、任意のハンドラ。
[signal]
void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
このシグナルは、矩形rect が更新されたときに発せられる。
QAbstractTextDocumentLayout のサブクラスは、再描画のためにコンテンツのレイアウトが変更されたときにこのシグナルを発するべきである。
[signal]
void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)
このシグナルは、指定されたblock が更新されたときに発せられる。
QAbstractTextDocumentLayout のサブクラスは、再描画のためにblock のレイアウトが変更されたときにこのシグナルを発するべきである。
© 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.