QAbstractTextDocumentLayout 类

QAbstractTextDocumentLayout 类是一个抽象基类,用于实现 QTextDocuments 的自定义布局。 更多...

头文件 #include <QAbstractTextDocumentLayout>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承自 QObject
被下列类继承

QPlainTextDocumentLayout

注意:本类中所有函数均可重入

公共类型

结构体PaintContext
结构体Selection

公共函数

QAbstractTextDocumentLayout(QTextDocument *document)
QStringanchorAt(const QPointF &position) const
virtual QRectFblockBoundingRect(const QTextBlock &block) const = 0
QTextBlockblockWithMarkerAt(const QPointF &pos) const
QTextDocument *document() const
virtual QSizeFdocumentSize() const = 0
virtual voiddraw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0
QTextFormatformatAt(const QPointF &pos) const
virtual QRectFframeBoundingRect(QTextFrame *frame) const = 0
QTextObjectInterface *handlerForObject(int objectType) const
virtual inthitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0
QStringimageAt(const QPointF &pos) const
virtual intpageCount() const = 0
QPaintDevice *paintDevice() const
voidregisterHandler(int objectType, QObject *component)
voidsetPaintDevice(QPaintDevice *device)
voidunregisterHandler(int objectType, QObject *component = nullptr)

信号

voiddocumentSizeChanged(const QSizeF &newSize)
voidpageCountChanged(int newPages)
voidupdate(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
voidupdateBlock(const QTextBlock &block)

受保护函数

virtual voiddocumentChanged(int position, int charsRemoved, int charsAdded) = 0
virtual voiddrawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
QTextCharFormatformat(int position)
virtual voidpositionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
virtual voidresizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

详细说明

Qt提供的标准布局可以处理包括内嵌图片、列表和表格在内的简单文字处理。

某些应用程序,例如文字处理器或DTP应用程序可能需要比Qt布局引擎提供的功能更多,在这种情况下,您可以继承QAbstractTextDocumentLayout以为您文本文档提供自定义布局行为。

可以使用setDocumentLayout()函数将QAbstractTextDocumentLayout子类的实例安装到一个QTextDocument对象上。

您可以在一个QTextDocument中插入自定义对象;有关详细信息,请参阅QTextObjectInterface类的描述。

另请参阅QTextObjectInterface

成员函数文档

[显式] QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)

为给定的document创建一个新的文本文档布局。

QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const

返回给定position的锚点引用,如果该点不存在锚点,则返回空字符串。

[纯虚] QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const

返回block的边界矩形。

QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const

返回其在给定位置pos具有marker的块(可能是列表项)。

QTextDocument *QAbstractTextDocumentLayout::document() const

返回该布局正在操作的文字文档。

[纯虚受保护] void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)

每当文档内容发生变化时都会调用此函数。变化发生在文本插入、删除或这两者的组合时。变化由对应于变化起始字符位置的位置、从文档中删除的字符数charsRemoved和增加的字符数charsAdded来指定。

例如,将文本“Hello”插入到一个空文档中时,charsRemoved将为0,charsAdded将为5(字符串的长度)。

替换文本是删除和插入的组合。例如,如果文本“Hello”被“Hi”替换,charsRemoved将为5,charsAdded将为2。

对于QAbstractTextDocumentLayout的子类,此函数是执行大量布局和位置文档内容的中心函数。

例如,在一个仅排列文本块的子类中,此函数的实现必须执行以下操作

另请参阅 QTextLayout

[纯虚函数] QSizeF QAbstractTextDocumentLayout::documentSize() const

返回文档布局的总大小。

显示小部件可以使用这些信息正确更新它们的滚动条。

另请参阅 documentSizeChanged()和QTextDocument::pageSize

[信号] void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)

当文档布局的大小变为newSize时发出此信号。

QAbstractTextDocumentLayout的子类应在文档整个布局大小改变时发出此信号。此信号对显示文本文档的小部件非常有用,因为它使它们能够正确更新它们的滚动条。

另请参阅 documentSize

[纯虚函数] void QAbstractTextDocumentLayout::draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context)

使用指定的paintercontext在布局上绘制。

[虚保护函数] void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)

该函数用于在指定的rect矩形内使用指定的文本文档格式format绘制行内对象物体object,并使用给定的painter进行绘制。

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

返回给定point点的光标位置和指定的accuracy。如果没有找到有效光标位置,则返回-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().

[虚拟受保护] 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()。这意味着一个对象类型可以有多个替换字符,但只有一个处理器。

文本文档布局不对 component 拥有所有权。

[虚拟受保护] void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

设置内联对象 item 的大小,以与文本 format 对应。

posInDocument指定了对象在文档中的位置。

默认实现使用对象处理器的 intrinsicSize() 函数返回的大小来调整 item 的大小。此函数仅在 Qt 中调用。子类可以重新实现此函数以自定义内联对象的调整大小。

void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)

将用于渲染文档布局的绘图设备设置为给定的 device

另请参阅paintDevice()。

void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)

注销给定的 component 作为特定 objectType 项目的处理器,或者如果未指定 component,则注销任何处理器。

[信号] void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))

当矩形 rect 被更新时发出此信号。

QAbstractTextDocumentLayout 的子类应在内容布局更改时发出此信号以重新绘制。

[信号] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)

指定 block 更新时发出此信号。

QAbstractTextDocumentLayout 的子类应在 block 的布局更改时发出此信号以重新绘制。

© 2024 The Qt Company Ltd. 本文件中包含的文档贡献享有各自的版权。本文件提供的文档根据自由软件基金会的发布的条款,按照GNU自由文档许可证版本1.3进行许可。Qt及其相关标志是芬兰和/或其他国家的The Qt Company Ltd.的商标。所有其他商标均为其各自拥有者的财产。