- class QQuickPaintedItem#
类
QQuickPaintedItem
提供了一种在 QML 场景图中使用 QPainter API 的方法。 更多…概览#
属性#
contentsScale
- 封存的缩放方法contentsSize
- 封存大小的设置方法fillColor
- 项目背景填充颜色renderTarget
- 项目的渲染目标textureSize
- 定义纹理的大小
方法#
def
__init__()
def
contentsScale()
def
contentsSize()
def
fillColor()
def
mipmap()
def
opaquePainting()
def
renderTarget()
定义
setMipmap()
定义
update()
虚函数#
定义
paint()
信号#
注意
本文档可能包含从 C++ 自动翻译成 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过创建关于 https:/bugreports.qt.io/projects/PYSIDE 的工单来告诉我们。
详细说明#
《QQuickPaintedItem》允许在QML场景图中使用QPainter API。它在场景图中设置了一个纹理矩形,并使用QPainter在纹理上绘制。Qt 6的渲染目标是始终为QImage。当渲染目标为QImage时,QPainter首先将内容渲染到图像中,然后将其上传到纹理。调用
update()
来触发重绘。为了启用QPainter进行抗锯齿渲染,请使用
setAntialiasing()
。要编写自己的绘制项,您首先创建《QQuickPaintedItem》的子类,然后开始实现其唯一的纯虚公共函数:
paint()
,它实现实际的绘制。绘制将在从0,0到width()
,height()
的矩形内进行。- class QmlIsUncreatable#
- class RenderTarget#
此枚举描述了《QQuickPaintedItem》的渲染目标。渲染目标是在物品渲染到屏幕上之前,QPainter在上面绘制表面的表面。
常量
描述
QQuickPaintedItem.Image
默认值;QPainter使用光栅绘制引擎将内容绘制到QImage中。在随后,需要将图像的内容上传到图形内存,如果是大型物品,此操作可能较慢。此渲染目标允许高质量的抗锯齿和快速物品调整大小。
QQuickPaintedItem.FramebufferObject
截至Qt 6.0,此值被忽略。
QQuickPaintedItem.InvertedYFramebufferObject
截至Qt 6.0,此值被忽略。
另请参阅
- class PerformanceHint#
(继承自
enum.Flag
)此枚举描述了您可以启用以在《QQuickPaintedItem》中提高渲染性能的标志。默认情况下,没有设置这些标志。常量
描述
QQuickPaintedItem.FastFBOResizing
截至Qt 6.0,此值被忽略。
注意
当使用
from __feature__ import true_property
时可以直接使用属性,否则通过访问函数来使用。- property contentsScale: float#
此属性存储已过时的内容缩放方法。
此函数提供用于兼容性,在使用
size()
和textureSize()
结合来决定你要绘制的尺寸。另请参阅
此属性存储已过时的设置内容尺寸的方法。
此函数提供用于兼容性,使用 size 结合
textureSize
来决定你要绘制的尺寸。另请参阅
此属性存储元素的背景填充颜色。
默认情况下,填充颜色设置为 Qt::transparent。
将填充颜色设置为无效颜色(例如桂林色())以禁用背景填充。这可能提高性能,并且当
paint()
函数foreach帧绘制到所有像素时是安全的。- property renderTarget: QQuickPaintedItem.RenderTarget#
此属性存储元素的渲染目标。
该属性定义了 QPainter 将渲染到的渲染目标是什么,可以是以下之一:
Image
、FramebufferObject
或InvertedYFramebufferObject
。每个都有某些优点,通常是性能与质量的权衡。使用帧缓冲区对象可以避免将图像内容上载到图形内存中的纹理的开销,而使用图像则可以实现高质量的反走样。
警告
调整帧缓冲区对象的大小是一个代价高昂的操作,如果项目经常调整大小,请避免使用
FramebufferObject
渲染目标。默认情况下,渲染目标是
Image
。该属性定义了纹理的大小。
更改纹理的大小不会影响在
paint()
中使用的坐标系。相反,会应用一个尺度因子,因此绘画仍应发生在 0,0 到width()
、height()
之间。默认情况下,纹理大小将与该项目的大小相同。
注意
如果项目位于与1不同的设备像素比窗口中,该尺度因子将隐式应用于纹理大小。
- __init__([parent=None])#
- 参数:
parent –
QQuickItem
使用指定的
parent
项构建一个QQuickPaintedItem
。此函数提供用于兼容性,使用 size 结合
textureSize
来决定你要绘制的尺寸。另请参阅
- contentsScale()#
- 返回类型:
float
另请参阅
属性
contentsScale
的获取器。- contentsScaleChanged()#
属性
contentsScale
的通知信号。- contentsSize()#
- 返回类型:
另请参阅
属性
contentsSize
的获取器。- contentsSizeChanged()#
属性
contentsSize
的通知信号。- fillColor()#
- 返回类型:
另请参阅
属性
fillColor
的获取器。- fillColorChanged()#
属性
fillColor
的通知信号。- mipmap()#
- 返回类型:
bool
如果启用mipmap返回true,否则返回false。
默认情况下,不会启用mipmap。
另请参阅
- opaquePainting()#
- 返回类型:
bool
如果此项目是不透明的返回true,否则返回false。
默认情况下,绘制项目不是不透明的。
另请参阅
这个函数通常由QML场景图调用,使用本地坐标绘制项的内容。
当设置时,底层的纹理大小由
textureSize
定义,或者项目的大小,乘以窗口的设备像素比。在项目填充了
fillColor
后,会调用这个函数。在子类
QQuickPaintedItem
中重写此函数,以提供对象的绘制实现,使用painter
。注意
QML场景图使用两个独立的线程,主线程负责处理事件或更新动画等,而第二个线程负责实际发出图形资源更新和记录绘图调用。因此,paint() 不是从主GUI线程调用,而是从启用了GL的渲染线程调用。在调用paint()的时候,GUI线程会被阻塞,因此它是线程安全的。
- performanceHints()#
- 返回类型:
PerformanceHint
的组合
返回性能提示。
默认情况下,不启用任何性能提示。
- renderTarget()#
- 返回类型:
另请参阅
属性
renderTargetᅟ
的getter。- renderTargetChanged()#
属性
renderTargetᅟ
的变更通知信号。- resetContentsSize()#
此便利函数等价于调用
setContentsSize
(QSize())。- setContentsScale(arg__1)#
- 参数:
arg__1 – float
另请参阅
属性
contentsScaleᅟ
的setter。设置属性
contentsSize
的值。设置属性
fillColor
的值。- setMipmap(enable)#
- 参数:
enable – 布尔型
如果
enable
为真,将关联纹理启用米格映射。米格映射可以提高窗口缩放时的渲染速度,并减少走样伪影。
默认情况下,不会启用mipmap。
另请参阅
- setOpaquePainting(opaque)#
- 参数:
opaque – 布尔型
如果
opaque
为真,则该项不透明;否则,被认为是半透明的。不透明项不会与场景中的其他部分混合,如果该项的内容不透明,则您应将其设置为 true 以加速渲染。
默认情况下,绘制项目不是不透明的。
另请参阅
- setPerformanceHint(hint[, enabled=true])#
- 参数:
hint –
PerformanceHint
enabled – 布尔型
如果
enabled
为真,则将给定的性能hint
设置在项上;否则清除性能提示。默认情况下,没有启用性能提示。
- setPerformanceHints(hints)#
- 参数:
hints –
PerformanceHint
的组合
将性能提示设置为
hints
默认情况下,没有启用性能提示。
- setRenderTarget(target)#
- 参数:
target –
RenderTarget
另请参阅
属性
renderTarget
的设置器。属性
textureSize
的设置器。- textureSize()#
- 返回类型:
另请参阅
属性
textureSize
的获取器。- textureSizeChanged()#
属性
textureSize
的通知信号。安排在此项中重绘由
rect
涵盖的区域。当您的小部件需要重新绘制时,可以调用此函数,例如外观或大小发生变化。此函数不会立即绘图;相反,它会安排一个绘制请求,该请求由 QML 场景图在渲染下一帧时处理。只有当该项可见时,才会重新绘制该项。
另请参阅