- class QAbstractTextDocumentLayout#
《QAbstractTextDocumentLayout》类是一个抽象基类,用于实现QTextDocuments的自定义布局。《更多》...
概要#
方法#
def
__init__()
def
anchorAt()
def
document()
def
format()
def
formatAt()
def
formatIndex()
def
imageAt()
def
paintDevice()
虚拟方法#
定义
draw()
定义
hitTest()
定义
pageCount()
信号#
定义
update()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式来告知我们
详细描述#
Qt提供的标准布局可以处理包括内联图像、列表和表格在内的简单文字处理。
某些应用,例如文字处理软件或桌面排版应用,可能需要比Qt布局引擎提供的功能更多,在这种情况下,您可以派生自
QAbstractTextDocumentLayout
,为您的文本文档提供定制的布局行为。通过
QAbstractTextDocumentLayout
子类的实例,可以使用QTextDocument
对象的setDocumentLayout()
函数安装到其中。您可以在
QTextDocument
中插入自定义对象;有关详情,请参阅QTextObjectInterface
类描述。另请参阅
- __init__(doc)#
- 参数:
doc –
QTextDocument
为给定的
document
创建一个新的文本文档布局。返回给定
position
的锚点引用,如果没有在那个位置找到锚点,则返回一个空字符串。- 抽象 blockBoundingRect(block)#
- 参数:
block –
QTextBlock
- 返回类型::
返回
block
的边界矩形。返回在给定位置
pos
找到标记的块(可能是列表项)。- document()#
- 返回类型::
返回此布局所操作的文本文档。
- 抽象 documentChanged(from, charsRemoved, charsAdded)#
- 参数:
from – int
charsRemoved – int
charsAdded – int
该函数在文档内容变更时被调用。文本插入、删除或这两者的组合都可以引起变更。变更通过更改的开始字符位置、从文档删除的字符数和添加的字符数来指定。
例如,当将“Hello”文本插入到空文档中时,
charsRemoved
将等于0,而charsAdded
将等于5(字符串的长度)。替换文本是删除和插入的组合。例如,如果文本“Hello”被替换为“Hi”,则
charsRemoved
将等于5,而charsAdded
将等于2。对于
QAbstractTextDocumentLayout
的子类,这是执行大部分布局和定位文档内容工作的核心函数。例如,在一个只排列文本块的子类中,此函数的实现必须执行以下操作
使用提供的参数确定已更改的
QTextBlock
(s)列表。每个
QTextBlock
对象的对应QTextLayout
对象需要被处理。您可以通过layout()
函数访问QTextBlock
的布局。此处理应考虑文档的页面大小。如果更改的总页数已更改,则应发出
pageCountChanged
信号。如果总大小已更改,则应发出
documentSizeChanged
信号。应该发出
update
信号,以安排布局中需要重绘的区域的重绘。
另请参阅
返回文档布局的总大小。
此信息可用于显示小部件正确更新其滚动条。
当文档布局的大小改变为
newSize
时,发送此信号。当子类
QAbstractTextDocumentLayout
的整个布局大小变化时,应发出此信号。对于显示文本文档的控件来说,该信号很有用,因为它使它们可以正确更新滚动条。另请参阅
使用给定的
painter
和context
绘制布局。- drawInlineObject(painter, rect, object, posInDocument, format)#
- 参数:
painter –
QPainter
rect –
QRectF
object –
QTextInlineObject
posInDocument – int
format –
QTextFormat
此函数被调用以在由
rect
指定的矩形内使用指定的文本format
和painter
绘制内联对象object
。posInDocument
指定了对象在文档中的位置。默认实现会在对象处理程序上调用 drawObject()。此函数仅在内置 Qt 中调用。子类可以重写此函数以自定义内嵌对象的绘制。
另请参阅
- format(pos)#
- 参数:
pos - int
- 返回类型::
返回在给定
position
可用的字符格式。返回给定位置
pos
的文本格式。- formatIndex(pos)#
- 参数:
pos - int
- 返回类型::
int
- abstract frameBoundingRect(frame)#
- 参数:
frame –
QTextFrame
- 返回类型::
返回
frame
的边界矩形。- handlerForObject(objectType)#
- 参数:
objectType – int
- 返回类型::
返回给定
objectType
对象的处理程序。- abstract hitTest(point, accuracy)#
- 参数:
point –
QPointF
accuracy –
HitTestAccuracy
- 返回类型::
int
返回给定
point
的光标位置以及指定的accuracy
。如果没有找到有效的光标位置,则返回 -1。返回给定位置
pos
的图像来源,或如果在该点不存在图像,则返回空字符串。- abstract pageCount()#
- 返回类型::
int
返回布局中包含的页数。
另请参阅
- pageCountChanged(newPages)#
- 参数:
newPages – int
此信号在布局中页面数发生变化时发出;
newPages
是更新后的页面计数。派生自< bekpage class="reference internal" href="#PySide6.QtGui.QAbstractTextDocumentLayout" title="PySide6.QtGui.QAbstractTextDocumentLayout"">
QAbstractTextDocumentLayout
的子类应在布局中的页面数发生变化时发出此信号。页面计数的变化是由布局或文档内容的更改引起的。另请参阅
- paintDevice()#
- 返回类型::
返回用于渲染文档布局的绘画设备。
另请参阅
- positionInlineObject(item, posInDocument, format)#
- 参数:
item –
QTextInlineObject
posInDocument – int
format –
QTextFormat
使用给定的文本
format
对内嵌对象item
进行布局。posInDocument
指定了对象在文档中的位置。默认实现不会做什么。该函数仅在Qt内部调用。子类可以重写此函数以自定义内嵌对象的位置。
另请参阅
将给定的
component
注册为给定objectType
项的处理程序。注意
必须为每个对象类型调用一次registerHandler()。这意味着同一对象类型的多个替代字符只有一个处理程序。
文本文档布局不拥有
component
。- resizeInlineObject(item, posInDocument, format)#
- 参数:
item –
QTextInlineObject
posInDocument – int
format –
QTextFormat
根据文本
format
设置与内嵌对象item
对应的尺寸。posInDocument
指定了对象在文档中的位置。默认实现将
item
调整到对象处理程序的内禀尺寸函数返回的尺寸。此函数仅在Qt内部调用。子类可以重写此函数以自定义内嵌对象的缩放。- setPaintDevice(device)#
- 参数:
device –
QPaintDevice
将用于渲染文档布局的绘画设备设置为给定的
device
。另请参阅
取消注册给定的
component
作为objectType
项的处理程序,或者在未指定component
时取消注册任何处理程序。当矩形
rect
被更新时,会发射此信号。QAbstractTextDocumentLayout
的子类应在内容布局变更以重新绘制时发射此信号。- updateBlock(block)#
- 参数:
block –
QTextBlock
当指定的
block
被更新时,会发射此信号。QAbstractTextDocumentLayout
的子类应在block
的布局变更以重新绘制时发射此信号。