- class QQuickItem#
QQuickItem
类提供了 Qt Quick 中所有视觉项中最基本的功能。...继承自:
QQuickRhiItem
,QQuickPaintedItem
,QQuickFramebufferObject
概要#
属性#
antialiasingᅟ
- 指定项是否具有反走样smoothᅟ
- 指定项是否平滑
方法#
def
__init__()
def
antialiasing()
def
baselineOffset()
def
childAt()
定义
childItems()
定义
clip()
定义
cursor()
定义
flags()
定义
grabMouse()
定义
hasFocus()
定义
height()
定义
isEnabled()
定义
polish()
定义
rotation()
定义
scale()
定义
setClip()
定义
setCursor()
定义
setEnabled()
定义
setFlag()
定义
setFlags()
定义
setFocus()
定义
setHeight()
def
setOpacity()
def
setParentItem()
def
setPosition()
def
setRotation()
def
setScale()
def
setSize()
def
setSmooth()
def
setState()
def
setVisible()
def
setWidth()
def
setX()
def
setY()
def
setZ()
def
size()
def
smooth()
def
stackAfter()
def
stackBefore()
def
state()
定义
width()
定义
widthValid()
定义
window()
定义
x()
定义
y()
定义
z()
虚方法#
定义
clipRect()
定义
contains()
定义
dropEvent()
定义
touchEvent()
定义
wheelEvent()
插槽#
定义
update()
信号#
定义
xChanged()
定义
yChanged()
定义
zChanged()
注意
本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段的翻译做出贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们
详细说明#
Qt Quick中所有视觉项都继承自
QQuickItem
。虽然QQuickItem
实例没有视觉表现,但它定义了所有视觉项共有的属性,例如x和y位置、宽度和高度、《锚定位》和关键处理支持。您可以继承
QQuickItem
以提供继承这些功能的自定义视觉项。自定义场景图项#
所有视觉QML项都使用场景图进行渲染,默认实现是一个底层、高性能的渲染堆栈,紧密关联于加速图形API,如OpenGL、Vulkan、Metal或Direct 3D。可以通过设置
ItemHasContents
标志并重写updatePaintNode()
函数,为QQuickItem
的子类添加自定义内容到场景图。警告
图形操作和与场景图的交互必须仅发生在渲染线程上,主要是
updatePaintNode()
调用期间。最好的做法是在updatePaintNode()
函数内仅使用带有“QSG”前缀的类。注意
应仅在场景图的渲染线程上使用所有带有QSG前缀的类。有关更多信息,请参阅《场景图和渲染》。
图形资源处理#
处理场景图中使用的图形资源清理的最佳方式是依赖于节点的自动清理。从
QSGNode
(通过updatePaintNode()
返回的自动在正确的线程和正确的时间删除。通过使用OwnedByParent
(默认设置)来管理QSGNode
实例的树。因此,对于大多数自定义场景图项,不需要额外的工作。存储图形资源在节点树之外的实施,例如实现
textureProvider()
的项,需要根据该项在 QML 中的使用方式正确地清理。要处理的情况有场景图无效化;这可能会发生,取决于平台和
QQuickWindow
配置,当使用 QQuickWindow::hide() 隐藏窗口或关闭窗口时。如果项类实现了名为invalidateSceneGraph()
的slot
,此槽将在 GUI 线程被阻塞时在渲染线程上调用。这相当于连接到sceneGraphInvalidated()
。当通过 OpenGL 渲染时,当调用此槽时,该项窗口的 OpenGL 上下文将绑定。唯一例外是如果原生 OpenGL 在 Qt 控制之外被销毁,例如通过EGL_CONTEXT_LOST
。项从场景中移除;如果一个项从场景中取出,例如因为它父项被设置为
null
或另一个窗口中的项,将在 GUI 线程上调用releaseResources()
。应使用scheduleRenderJob()
来安排渲染资源的清理。项被删除;当项的析构函数运行时,它应该删除它拥有的任何图形资源。如果上述两个条件中没有一个已经满足,该项将位于窗口中,并且可以使用
scheduleRenderJob()
来进行清理。如果一个实现忽略了releaseResources()
的调用,那么在许多情况下该项将不再有权访问QQuickWindow
,因此没有安排清理的方式。
使用
scheduleRenderJob()
安排图形资源清理时,应使用BeforeSynchronizingStage
或AfterSynchronizingStage
。同步阶段是场景图由于QML树的变化而改变的地方。如果在不同时间安排清理,可能会出现场景图的其它部分引用新删除的物体,因为这些部分没有更新。注意
强烈不建议使用QObject::deleteLater()来清理图形资源,因为这会使删除操作在任意时间运行,并且当删除发生时不知道是否有OpenGL上下文被绑定。
自定义QPainter物品#
QQuickItem
提供了一个子类,QQuickPaintedItem
,它允许用户使用QPainter渲染内容。警告
使用
QQuickPaintedItem
时,其内容使用间接2D表面进行渲染,使用软件光栅化,因此渲染是两步操作。首先光栅化表面,然后绘制表面。直接使用场景图API总是更快。行为动画#
如果您的物品使用《贝叶斯》类型定义属性变化的动画,那么在您需要从C++修改这些属性时,应始终使用QObject::setProperty()、QQmlProperty()或QMetaProperty::write()。这确保QML引擎知道属性变化。否则,引擎将无法执行您请求的动画。注意,这些函数会有轻微的性能损失。有关更多详细信息,请参阅从C++访问QML对象类型的成员。
另见
QQuickWindow
QQuickPaintedItem
- class Flag#
(继承自
enum.Flag
) 此枚举类型用于指定各种物品属性。常量
描述
QQuickItem.ItemClipsChildrenToShape
指示此物品应视觉上裁剪其子项,以便它们只在此物品的边界内渲染。
QQuickItem.ItemAcceptsInputMethod
指示物品支持文本输入方法。
QQuickItem.ItemIsFocusScope
指示物品是一个焦点作用域。有关更多信息,请参见《Qt Quick键盘焦点》。
QQuickItem.ItemHasContents
指示该项目包含视觉内容,应由场景图进行渲染。
QQuickItem.ItemAcceptsDrops
指示该项目接受拖放事件。
QQuickItem.ItemIsViewport
指示该项目为其子项定义了一个视口。
QQuickItem.ItemObservesViewport
指示该项目希望在具有ItemIsViewport标志的祖先项上设置时了解视口边界。
- class ItemChange#
与
itemChange()
结合使用,以通知项目有关某些类型的变化。常量
描述
QQuickItem.ItemChildAddedChange
添加了子项。《ItemChangeData::item》包含添加的子项。
QQuickItem.ItemChildRemovedChange
移除了子项。《ItemChangeData::item》包含移除的子项。
QQuickItem.ItemSceneChange
该项被添加到或从场景中移除。《QQuickWindow》指定用于渲染场景的窗口,在《ItemChangeData::window》中使用。当项被从场景中移除时,窗口参数为null。
QQuickItem.ItemVisibleHasChanged
项的可见性已更改。《ItemChangeData::boolValue》包含新的可见性。
QQuickItem.ItemParentHasChanged
项的父项已更改.《ItemChangeData::item》包含新的父项。
QQuickItem.ItemOpacityHasChanged
项的不透明度已更改。《ItemChangeData::realValue》包含新的不透明度。
QQuickItem.ItemActiveFocusHasChanged
项的焦点已更改。《ItemChangeData::boolValue》包含项是否有焦点。
QQuickItem.ItemRotationHasChanged
项的旋转已更改。《ItemChangeData::realValue》包含新的旋转。
QQuickItem.ItemDevicePixelRatioHasChanged
项所在的屏幕的设备像素比已更改。《ItemChangedData::realValue》包含新的设备像素比。
QQuickItem.ItemAntialiasingHasChanged
抗锯齿已更改。当前(布尔)值可在《antialiasing》中找到。
QQuickItem.ItemEnabledHasChanged
项的启用状态已更改。《ItemChangeData::boolValue》包含新的启用状态。(自Qt 5.10起)
- class TransformOrigin#
控制应用简单转换(如缩放)的点。
常量
描述
QQuickItem.TopLeft
项的左上角。
QQuickItem.Top
项顶部的中心点。
QQuickItem.TopRight
项的右上角。
QQuickItem.Left
垂直中点最左侧的点。
QQuickItem.Center
项的中心。
QQuickItem.Right
垂直中点最右侧的点。
QQuickItem.BottomLeft
项的左下角。
QQuickItem.Bottom
项底部的中心点。
QQuickItem.BottomRight
项的右下角。
注意
当使用
from __feature__ import true_property
时,可以直接使用属性,否则可以通过访问函数使用。- 属性 activeFocusᅟ: bool#
该只读属性指示项是否有活动焦点。
如果activeFocus为true,则该项是当前接收键盘输入的项,或者它是当前接收键盘输入的项的FocusScope祖先。
通常,通过设置项及其封装的FocusScope对象的
focus
来获得activeFocus。在下面的示例中,input
和focusScope
对象将具有活动焦点,而根矩形对象则不会。另见
focus
Qt Quick中的键盘焦点- 访问函数
- 属性 activeFocusOnTabᅟ: bool#
该属性表示项是否想在标签焦点链中。默认情况下,这设置为
false
。- 属性 antialiasingᅟ: bool#
该属性指定项是否进行抗锯齿处理。
由视觉元素使用以决定项是否应使用抗锯齿。在某些情况下,使用抗锯齿的项可能需要更多内存,且渲染速度可能较慢(有关详细信息,请参阅抗锯齿)。
默认情况下设置为false,但可能被派生元素覆盖。
- 属性baselineOffset atributo: float#
指定项目基线的位置,使用本地坐标系。
文本项的基线是文本所在的一个假想线。包含文本的控件通常会将基线设置为文本的基线。
对于非文本项,使用默认的基线偏移量0。
此属性保存项目子项的总位置和大小。
此属性很有用,当你需要访问项目子项的总几何形状以便正确调整项目大小时。
返回的几何形状位于项目本地。例如
Item { x: 50 y: 100 // prints: QRectF(-10, -20, 30, 40) Component.onCompleted: print(childrenRect) Item { x: -10 y: -20 width: 30 height: 40 } }
- 访问函数
- 属性clip atributo: bool#
此属性保留是否启用了裁剪。默认裁剪值为
false
。如果启用了裁剪,项目将裁剪其自己的绘制以及其子项的绘制到其边界矩形。如果你在项目的绘制操作期间设置裁剪,请记住重新设置它以防止裁剪您场景的其余部分。
注意
裁剪可能会影响渲染性能。有关更多信息,请参阅裁剪。
注意
为了QML的方便,将裁剪设置为
true
也会设置ItemIsViewport
标记,这有时可以作为优化:具有ItemObservesViewport
标记的子项可能不会创建视图之外的场景图节点。但是ItemIsViewport
标记也可以独立设置。- 访问函数
该属性包含一个用于在
contains()
方法中使用的可选遮罩,该方法主要用于对每个 QPointerEvent 进行点击测试。默认情况下,
contains()
将返回值为true
的任何点,只要它位于 Item 的边界框内。但任何QQuickItem
或实现类似功能的任何 QObject 都可以用作遮罩,以便将击中测试推迟到该对象。Q_INVOKABLE bool contains(const QPointF &point) const;
可以用于延迟击中测试的对象,例如:
注意
contains()
方法在事件传输过程中经常被调用。将击中测试推迟到另一个对象会降低其速度。如果该对象的contains()
方法效率不高,那么containmentMask
() 可能会导致性能问题。如果你实现了自定义的QQuickItem
子类,你可以通过覆写contains()
来选择性地进行覆盖。另见
- property enabledᅟ: bool#
该属性表示项目是否接收鼠标和键盘事件。默认情况下为 true。
直接设置此属性将直接影响子项目的
enabled
值。当设置为false
时,所有子项目的enabled
值也变为false
。当设置为true
时,除非它们已被显式设置为false
,否则子项目的enabled
值将返回到true
。将此属性设置为
false
将自动将activeFocus
设置为false
,并且此项目将不再接收键盘事件。注意
hover事件通过
setAcceptHoverEvents()
独立启用。因此,即使此属性为false
,已禁用项也可以继续接收hover事件。这使得即使在交互项目禁用的情况下,也可以显示信息反馈(如工具提示)。对于作为项目子级添加的任何HoverHandlers,也是如此。然而,HoverHandler可以显式禁用,或者例如绑定到项目的enabled
状态。另见
可见
- 属性 focus: bool#
此属性表示项目是否在包含的FocusScope内拥有焦点。如果为true,当包含的FocusScope获得活动焦点时,该项将获得活动焦点。
以下示例中,
input
将在scope
获得活动焦点时获得活动焦点对于此属性,整个场景将假定像焦点作用域一样行为。在实践中,这意味着以下QML在启动时将给
input
分配活动焦点。另见
activeFocus
Qt Quick中的键盘焦点- 访问函数
- 属性 focusPolicy: Qt.FocusPolicy#
此属性确定项接受焦点的方式。
注意
此属性在Qt 6.7之前是控制的一个成员。
- 属性 height: float#
此属性表示此项目的高度。
- 属性 implicitHeight: float#
- 属性 implicitWidth: float#
- 属性 opacity: float#
此属性包含项目的透明度。透明度通过在 0.0(完全透明)到 1.0(完全不透明)之间的数字指定。默认值为 1.0。
当设置此属性时,指定的透明度也会应用于子项。在某些情况下,这可能会导致意外效果。例如,在下图第二组矩形中,红色矩形指定了透明度为 0.5,这影响了其蓝色子矩形的透明度,尽管子矩形没有指定透明度。
超出 0 到 1 范围的值将被限制。
+—————————————————++ | .. image:: images/declarative-item_opacity1.png|| +—————————————————++ | .. image:: images/declarative-item_opacity2.png|| +—————————————————++
更改项目的透明度不会影响项目是否接收用户输入事件。(相比之下,将
visible
属性设置为false
将停止鼠标事件,将enabled
属性设置为false
将停止鼠标和键盘事件,并从项目中移除当前焦点。)另见
可见
- 访问函数
- 属性 parent: QQuickItem#
此属性包含项目的视觉父项。
注意
视觉父项的概念与 QObject 父项的概念不同。项目的视觉父项可能不一定与其实例父项相同。有关详细信息,请参阅 概念 - Qt Quick 中的视觉父项。
注意
当视觉父项被销毁时,会发出此属性的通知信号。C++ 信号处理程序不能假设视觉父项层次结构中的项目已经完全构建。使用 qobject_cast 验证父项层次结构中的项目是否可以安全地用作预期类型。
- 属性 rotation: float#
此属性包含项目在
transformOrigin
点按顺时针方向旋转的度数。默认值是 0 度(即不旋转)。
- 访问函数
- 属性scaleᅟ: float#
此属性保存了此元素的缩放因子。
小于 1.0 的缩放会导致元素以较小的尺寸渲染,大于 1.0 的缩放将使元素以较大的尺寸渲染。负缩放会在渲染时镜像元素。
默认值为 1.0。
缩放是从
transformOrigin
应用。- 访问函数
- 属性smoothᅟ: bool#
此属性指定元素是否平滑。
主要用于基于图像的项目以决定是否使用平滑采样。平滑采样使用线性插值执行,而非平滑采样使用最近邻。
在 Qt Quick 2.0 中,此属性对性能的影响最小。
默认情况下,此属性设置为
true
。- 访问函数
- 属性stateᅟ: str#
此属性保存了项目的当前状态名称。
如果项目处于默认状态,即未设置显式状态,则此属性为空字符串。同样,您可以将项目设置为其默认状态,方法是将此属性设置为一个空字符串。
另见
- 访问函数
- 属性transformOriginᅟ: QQuickItem.TransformOrigin#
此属性保存了缩放和旋转变换的旋转原点。
如下图中所示,有九个变换原点可用。默认变换原点是
Item.Center
。- 属性 visible: bool#
此属性表示项目是否可见。默认值为true。
直接设置此属性将影响子项目中的
visible
值。当设置为false
时,所有子项目的visible
值也将变为false
。当设置为true
时,子项目的visible
值将恢复为true
,除非它们已被显式设置为false
。(由于这种连锁反应行为,如果属性绑定应仅对显式属性更改作出响应,则使用
visible
属性可能不会产生预期的效果。在这种情况下,最好使用opacity
属性代替。)如果此属性设置为
false
,则项目将不再接收鼠标事件,但将继续接收键盘事件,并且如果已被设置,则保留键盘focus
。(相比之下,将enabled
属性设置为false
将停止接收鼠标和键盘事件,并从项目移除焦点。)注意
此属性的值仅受此属性更改或父项目的
visible
属性更改的影响。例如,如果此项目移出屏幕或opacity
更改到0,则不会改变。然而,由于历史原因,在项目构造之后,此属性为真,即使项目尚未添加到场景中。更改或读取尚未添加到场景的项目属性可能不会产生预期的结果。注意
当视觉父项被销毁时,会发出此属性的通知信号。C++ 信号处理程序不能假设视觉父项层次结构中的项目已经完全构建。使用 qobject_cast 验证父项层次结构中的项目是否可以安全地用作预期类型。
另见
opacity
enabled
- 访问函数
- 属性 width: float#
此属性表示此项目的宽度。
- 访问函数
- 属性 x: float#
定义了该项相对于其父项的 x 轴位置。
- 访问函数
信号
xChanged()
- 属性 y: float#
定义了该项相对于其父项的 y 轴位置。
- 访问函数
信号
yChanged()
- 属性 z: float#
设置同级项目的堆叠顺序。默认堆叠顺序为 0。
堆叠值较高的项目会在堆叠值较低的项目上方绘制。堆叠值相同的项目按出现顺序从下往上绘制。堆叠值为负的项目在其父内容下方绘制。
以下示例展示了堆叠顺序的多种效果。
相同
z
- 后续子项在早期子项之上更高的
z
在顶部相同
z
- 子项在父项之上更低的
z
在下方- 访问函数
信号
zChanged()
- __init__([parent=None])#
- 参数:
parent –
QQuickItem
使用给定的
parent
构造一个QQuickItem
。parent
既能作为视觉 父项
,也能作为 QObject 父项。- acceptHoverEvents()#
- 返回类型:
bool
返回此项目是否接受悬停事件。
默认值为 false。
如果这是 false,则该项目不会通过
hoverEnterEvent()
、hoverMoveEvent()
和hoverLeaveEvent()
函数接收任何悬停事件。- acceptTouchEvents()#
- 返回类型:
bool
返回此项是否接受触摸事件。
默认值是
false
。如果此值为
false
,则项将通过touchEvent()
函数不接受任何触摸事件。- acceptedMouseButtons()#
- 返回类型:
MouseButton
的组合
返回此项接受的鼠标按钮。
默认值是 Qt::NoButton;即不接受任何鼠标按钮。
如果项不接受特定鼠标事件的鼠标按钮,则该鼠标事件将不会传递给该项,而会传递给项层次结构中的下一个项。
- activeFocusChanged(arg__1)#
- 参数:
arg__1 – bool
属性
activeFocus
的通知信号。- activeFocusOnTab()#
- 返回类型:
bool
属性
activeFocusOnTab
的获取器。- activeFocusOnTabChanged(arg__1)#
- 参数:
arg__1 – bool
属性
activeFocusOnTab
的通知信号。- antialiasing()#
- 返回类型:
bool
属性
antialiasing
的获取器。- antialiasingChanged(arg__1)#
- 参数:
arg__1 – bool
属性
antialiasing
的通知信号。- baselineOffset()#
- 返回类型:
float
属性
baselineOffset
的获取器。- baselineOffsetChanged(arg__1)#
- 参数:
arg__1 – float
属性
baselineOffset
的通知信号。返回项在其自身坐标系中的范围:从
0, 0
到width()
和height()
的矩形。- childAt(x, y)#
- 参数:
x – float
y – float
- 返回类型:
在当前项的坐标系中,返回在点 (
x
,y
) 处找到的第一个可见子项。如果没有这样的项,则返回
None
。- childItems()#
- 返回类型:
. QQuickItem 类型的列表
返回此项的子项。
- childMouseEventFilter(arg__1, arg__2)#
- 参数:
arg__1 –
QQuickItem
arg__2 –
QEvent
- 返回类型:
bool
重写此方法以过滤此项的子项接收到的指针事件。
如果
filtersChildMouseEvents()
为true
,则将调用此方法。如果指定的
event
应该不传递给指定的子item
,则返回true
,否则返回false
。如果您返回true
,您还应该接收或忽略event
,以表示事件传播是否应该停止或继续。但是,事件将始终发送到父子链上的所有子MouseEventFilter。注意
尽管名称如此,此功能在交付给所有子项(通常是鼠标、触摸和平板电脑事件)时过滤所有QPointerEvent实例。在子类中重写此功能时,我们建议编写仅使用在QPointerEvent中找到的访问器编写的通用事件处理代码。或者,您可以通过
event->type()
和/或event->device()->type()
切换来以不同的方式处理不同的事件类型。注意
过滤只是处理手势歧义(例如在按下时,您不知道用户会点击还是拖动)责任共享的一种方式。另一种方式是在按下时调用QPointerEvent::addPassiveGrabber(),以便非排他性地监视QEventPoint的进度。在任何一种情况下,正在监视的项目或指针处理器都可以在手势模式符合预期的模式下稍后抢占排他性抓取。
- childrenChanged()#
属性
childrenRectᅟ
的获取器。属性
childrenRectᅟ
的通知信号。属性
clipᅟ
的获取器。- clipChanged(arg__1)#
- 参数:
arg__1 – bool
属性
clipᅟ
的通知信号。返回此项目在其可见的
viewportItem()
中包含的矩形区域,如果有视口且设置了ItemObservesViewport
标志;否则,返回此项目在它自己的坐标系中的扩展范围:从0, 0
到width()
和height()
的矩形。这是当clip
为true
时预期保持可见的区域。它也可以在updatePaintNode()
中使用,以限制添加到场景图中的图形。例如,一个大型绘图或大型文本文档可能在一个只占据应用程序窗口一部分大小的 Flickable 中显示:在这种情况下,Flickable 是视口项,并且可以自定义内容渲染项选择省略当前可见区域外的场景图节点。如果设置了
ItemObservesViewport
标志,则在用户在 Flickable 中滚动内容时,此区域将发生变化。在嵌套视口项的情况下, clipRect() 是所有设置了
ItemIsViewport
标志的祖先boundingRect
的交集,映射到本项目的坐标系。属性
containmentMaskᅟ
的获取器。- containmentMaskChanged()#
属性
containmentMaskᅟ
的通知信号。如果此项目包含
point
(在局部坐标系中),则返回true
,否则返回false
。此函数可以被覆盖用来处理具有自定义形状的项目的点碰撞。默认实现会检查点是否在
containmentMask()
设置的情况下位于其中,或者在其他情况下位于边界框内。注意
此方法用于在事件传递过程中对每个QEventPoint进行碰撞检测,所以实现应该尽可能保持轻量。
返回此项的游标形状。
当鼠标光标位于此项上时,鼠标光标将假定此形状,除非设置了重写游标。请参阅预定义游标对象列表,了解一系列有用的形状。
如果没有设置游标形状,此函数将返回一个具有Qt::ArrowCursor形状的光标,然而如果有重合的项目具有有效的光标,则可能显示另一个光标形状。
- dragEnterEvent(arg__1)#
- 参数:
arg__1 –
QDragEnterEvent
可以在子类中重新实现此事件处理程序以接收项目的拖入事件。事件信息由
event
参数提供。仅当为此项设置了
ItemAcceptsDrops
标志时,才提供拖放事件。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。另见
Drag
Drag and Drop
- dragLeaveEvent(arg__1)#
- 参数:
arg__1 –
QDragLeaveEvent
可以在子类中重新实现此事件处理程序以接收项目的拖出事件。事件信息由
event
参数提供。仅当为此项设置了
ItemAcceptsDrops
标志时,才提供拖放事件。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。另见
Drag
Drag and Drop
- dragMoveEvent(arg__1)#
- 参数:
arg__1 –
QDragMoveEvent
可以在子类中重新实现此事件处理程序以接收项目的拖动事件。事件信息由
event
参数提供。仅当为此项设置了
ItemAcceptsDrops
标志时,才提供拖放事件。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。另见
Drag
Drag and Drop
- dropEvent(arg__1)#
- 参数:
arg__1 –
QDropEvent
该事件处理程序可以在子类中重写以接收项的拖放事件。事件信息由
event
参数提供。仅当为此项设置了
ItemAcceptsDrops
标志时,才提供拖放事件。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。另见
Drag
Drag and Drop
- dumpItemTree()#
递归地输出从该项开始的 项目可视化树 的一些详细信息。
注意
QObject::dumpObjectTree() 输出类似的树;但是,如 概念 - Qt Quick 中的可视化父类 中所述,项的 QObject::parent() 有时与其
parentItem()
不同。您可以通过同时输出两棵树来查看差异。- enabledChanged()#
enabled
属性的通知信号。- ensurePolished()#
调用
updatePolish()
对于布局(或定位器)等项,这可能在接收 PolishEvent 之前延迟计算它们的
implicitWidth
和implicitHeight
。这可能非常有用。通常,如果在布局中添加或删除子项,则隐式大小不会立即计算(这是一种优化)。在某些情况下,可能在添加子项后立即查询布局的隐式大小。如果这样做,请在查询隐式大小之前使用此函数。
另见
updatePolish()
polish()
- filtersChildMouseEvents()#
- 返回类型:
bool
返回是否应该通过该项过滤针对其子项的指针事件。
如果这个项目及其子项目都有
acceptTouchEvents()
true
,那么当发生触摸交互时,这个项目将过滤触摸事件。但是,如果这个项目或其子项目无法处理触摸事件,childMouseEventFilter()
将使用合成的鼠标事件被调用。返回该项目的项目标志。
- focusChanged(arg__1)#
- 参数:
arg__1 – bool
属性
focus
的通知信号。- focusInEvent(arg__1)#
- 参数:
arg__1 –
QFocusEvent
这个事件处理器可以在子类中重新实现以接收项目的焦点进入事件。事件信息由参数
event
提供。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。如果您重新实现了这个函数,您应该调用基类实现。
- focusOutEvent(arg__1)#
- 参数:
arg__1 –
QFocusEvent
这个事件处理器可以在子类中重新实现以接收项目的焦点退出事件。事件信息由参数
event
提供。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。属性
focusPolicy
的获取器。- focusPolicyChanged(arg__1)#
- 参数:
arg__1 –
FocusPolicy
属性
focusPolicyᅟ
的通知信号。- forceActiveFocus()#
强制在项目上设置活动焦点。
此方法将焦点设置在项目上,并确保对象层次结构中所有祖先的 FocusScope 对象也都获得
focus
。焦点改变的原因将是 Qt::OtherFocusReason。通过重载方法来指定焦点原因,可以更好地处理焦点更改。
另见
activeFocus
- forceActiveFocus(reason)
- 参数:
reason –
FocusReason
这是一个重载的函数。
使用给定的
reason
强制在项目上设置活动焦点。此方法将焦点设置在项目上,并确保对象层次结构中所有祖先的 FocusScope 对象也都获得
focus
。另见
activeFocus
FocusReason
当项目中从
oldGeometry
到newGeometry
的几何形状发生变化时,将调用此函数。如果两个几何形状相同,则不执行任何操作。派生类必须在其实例化中调用基类方法。
- grabMouse()#
使用 QPointerEvent::setExclusiveGrabber()。
捕获鼠标输入。
在调用
ungrabMouse()
之前,此项目将接收到所有鼠标事件。通常不应调用此函数,因为接受例如鼠标按下事件会确保后续事件会被传递给该项目。如果项目要接管当前接收器的鼠标事件,则需要调用此函数。警告
应谨慎使用此函数。
- grabToImage([targetSize=QSize()])
- 参数:
目标大小 –
QSize
- 返回类型:
QSharedPointer
将项抓取到内存中的图像。
抓取操作异步进行,当抓取完成后,会发出信号
ready()
。使用
targetSize
来指定目标图像的大小。默认情况下,结果将与项的大小相同。如果无法启动抓取,该函数返回
null
。- grabTouchPoints(ids)#
- 参数:
ids – 整数列表
使用 QPointerEvent::setExclusiveGrabber(). 抓取由
ids
指定的触摸点。这些触摸点将保留在项中,直到它们被释放。或者,可以被过滤器项(如 Flickable)“窃取”。使用
setKeepTouchGrab()
防止抓取被窃取。- hasActiveFocus()#
- 返回类型:
bool
属性
activeFocusᅟ
的获取器。- hasFocus()#
- 返回类型:
bool
属性
focusᅟ
的获取器。- height()#
- 返回类型:
float
另见
属性
heightᅟ
的获取器。- heightChanged()#
属性
heightᅟ
发出的通知信号。- heightValid()#
- 返回类型:
bool
返回是否显式设置了高度属性。
- hoverEnterEvent(event)#
- 参数:
event –
QHoverEvent
该事件处理器可以在子类中重写以接收对项目的悬停进入事件。事件信息由
event
参数提供。只有当
acceptHoverEvents()
为真时,才会提供悬停事件。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- hoverLeaveEvent(event)#
- 参数:
event –
QHoverEvent
该事件处理器可以在子类中重写以接收对项目的悬停离开事件。事件信息由
event
参数提供。只有当
acceptHoverEvents()
为真时,才会提供悬停事件。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- hoverMoveEvent(event)#
- 参数:
event –
QHoverEvent
该事件处理器可以在子类中重写以接收对项目的悬停移动事件。事件信息由
event
参数提供。只有当
acceptHoverEvents()
为真时,才会提供悬停事件。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- implicitHeight()#
- 返回类型:
float
属性
implicitHeightᅟ
的获取器。- implicitHeightChanged()#
属性
implicitHeightᅟ
的通知信号。- implicitWidth()#
- 返回类型:
float
返回由其他确定内容的属性隐含的项的宽度。
属性
implicitWidthᅟ
的获取器。- implicitWidthChanged()#
属性
implicitWidthᅟ
的通知信号。- inputMethodEvent(arg__1)#
- 参数:
arg__1 –
QInputMethodEvent
该事件处理器可以在子类中重写以接收对项目的输入法事件。事件信息由
event
参数提供。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- inputMethodQuery(query)#
- 参数:
query –
InputMethodQuery
- 返回类型:
对象
此方法仅适用于输入项。
如果此项是输入项,则应重写此方法以返回针对给定
query
的相关输入法标志。- isAncestorOf(child)#
- 参数:
child –
QQuickItem
- 返回类型:
bool
返回
true
表示此项是child
的祖先(即,如果此项是child
的父项,或者child
父项的祖先之一)。另见
- isComponentComplete()#
- 返回类型:
bool
如果 QML 组件的构建完成则返回 true;否则返回 false。
通常希望在组件完成构建后再进行一些处理。
另见
componentComplete()
- isEnabled()#
- 返回类型:
bool
属性
enabledᅟ
的获取器。- isFocusScope()#
- 返回类型:
bool
返回
true
表示此项是一个焦点作用域,否则返回false
。- isTextureProvider()#
- 返回类型:
bool
返回
true
表示此项是纹理提供者。默认实现返回false
。此函数可以从任何线程中调用。
- isUnderMouse()#
- 返回类型:
bool
- isVisible()#
- 返回类型:
bool
属性
visibleᅟ
的获取器。- itemTransform(arg__1)#
- 参数:
arg__1 –
QQuickItem
- 返回类型:
PyTuple
- keepMouseGrab()#
- 返回类型:
bool
返回是否应该使鼠标输入独占此项。
- keepTouchGrab()#
- 返回类型:
bool
返回是否应该使此项捕获的触摸点独占此项。
此事件处理程序可以在子类中重新实现,以接收项目的按键事件。事件信息由
event
参数提供。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。此事件处理程序可以在子类中重新实现,以接收项目的按键释放事件。事件信息由
event
参数提供。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。将给定
point
在全局屏幕坐标系中的内容映射到该项目的坐标系中等效的点,并返回映射后的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。例如,这可以帮助向 Qt Quick 组件添加弹出窗口。
注意
窗口定位由窗口管理器完成,此值仅作为提示。因此,结果窗口位置可能与预期不同。
注意
如果此项目在子场景中,例如映射到 3D 模型对象,则 UV 映射将纳入此转换,以便它真正从屏幕坐标转换为此项目的坐标,只要
point
实际上位于此项目的范围内。其他映射函数尚不支持这种方式。- mapFromGlobal(x, y)
- 参数:
x – float
y – float
- 返回类型:
- mapFromItem(item, point)#
- 参数:
item –
QQuickItem
point –
QPointF
- 返回类型:
将给定的
point
在item
坐标系中映射到本项坐标系的等效点,并返回映射后的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。如果
item
是None
,则此操作将point
从场景坐标系统映射。- mapFromItem(item, rect)
- 参数:
item –
QQuickItem
rect –
QRectF
- 返回类型:
将给定的
point
在item
坐标系中映射到本项坐标系的等效点,并返回映射后的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。如果
item
是None
,则此操作将point
从场景坐标系统映射。- mapFromItem(item, x, y)
- 参数:
item –
QQuickItem
x – float
y – float
- 返回类型:
- mapFromItem(item, x, y, width, height)
- 参数:
item –
QQuickItem
x – float
y – float
width – float
height – float
- 返回类型:
将给定
point
在场景坐标系中映射到本项坐标系的等效点,并返回映射后的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。- mapRectFromItem(item, rect)#
- 参数:
item –
QQuickItem
rect –
QRectF
- 返回类型:
将给定
rect
在item
坐标系中映射到本项坐标系的等效矩形区域,并返回映射后的矩形值。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。如果
item
是None
,则将rect
从场景坐标系统映射。将给定
rect
在场景坐标系中映射到本项坐标系的等效矩形区域,并返回映射后的矩形值。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。- mapRectToItem(item, rect)#
- 参数:
item –
QQuickItem
rect –
QRectF
- 返回类型:
将给定
rect
在本项坐标系中映射到item
的坐标系的等效矩形区域,并返回映射后的矩形值。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。如果
item
为None
,则此函数将rect
映射到场景坐标系。将给定的矩形
rect
在此项目坐标系中映射到场景坐标系中相对应的矩形区域,并返回映射后的矩形值。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。将给定的
point
在此项目坐标系中映射到全局屏幕坐标系中的等效点,并返回映射的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。例如,这可以帮助向 Qt Quick 组件添加弹出窗口。
- mapToGlobal(x, y)
- 参数:
x – float
y – float
- 返回类型:
- mapToItem(item, point)#
- 参数:
item –
QQuickItem
point –
QPointF
- 返回类型:
将给定的
point
在此项目坐标系中映射到item
的坐标系中的等效点,并返回映射的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。如果
item
为None
,则此函数将point
映射到场景坐标系。- mapToItem(item, rect)
- 参数:
item –
QQuickItem
rect –
QRectF
- 返回类型:
将给定的
point
在此项目坐标系中映射到item
的坐标系中的等效点,并返回映射的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。如果
item
为None
,则此函数将point
映射到场景坐标系。- mapToItem(item, x, y)
- 参数:
item –
QQuickItem
x – float
y – float
- 返回类型:
- mapToItem(item, x, y, width, height)
- 参数:
item –
QQuickItem
x – float
y – float
width – float
height – float
- 返回类型:
将给定的
point
在此项目坐标系中映射到场景坐标系中的等效点,并返回映射的坐标。在映射过程中使用了项目的以下属性:
x
、y
、scale
、rotation
、transformOrigin
和 transform。- mouseDoubleClickEvent(event)#
- 参数:
event –
QMouseEvent
此事件处理程序可以在子类中重新实现以接收项目的鼠标双击事件。事件信息由
event
参数提供。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- mouseMoveEvent(event)#
- 参数:
event –
QMouseEvent
此事件处理程序可以由子类重写以接收项目的鼠标移动事件。事件信息由参数
event
提供。为了接收鼠标移动事件,必须接受之前的鼠标按下事件(例如通过重写
mousePressEvent()
等)以及acceptedMouseButtons()
必须返回相关的鼠标按钮。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- mousePressEvent(event)#
- 参数:
event –
QMouseEvent
此事件处理程序可以由子类重写以接收项目的鼠标按下事件。事件信息由参数
event
提供。为了接收鼠标按下事件,
acceptedMouseButtons()
必须返回相关的鼠标按钮。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- mouseReleaseEvent(event)#
- 参数:
event –
QMouseEvent
此事件处理程序可以由子类重写以接收项目的鼠标释放事件。事件信息由参数
event
提供。为了接收鼠标释放事件,必须接受之前的鼠标按下事件(例如通过重写
mousePressEvent()
等)以及acceptedMouseButtons()
必须返回相关的鼠标按钮。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- mouseUngrabEvent()#
此事件处理程序可以由子类重写,以通知当此项目发生鼠标未捕获事件时。
- nextItemInFocusChain([forward=true])#
- 参数:
forward – bool
- 返回类型:
返回与该项目相邻的焦点链中的项目。如果
forward
是true
,或未提供,它是前进方向上的下一个项目。如果forward
是false
,它是后退方向上的下一个项目。- opacity()#
- 返回类型:
float
另见
属性
opacity
的获取器。- opacityChanged()#
属性
opacity
的通知信号。- paletteChanged()#
属性
parent
的通知信号。- parentItem()#
- 返回类型:
属性
parent
的获取器。- polish()#
为该项调度一个抛光事件。
当场景图处理请求时,它将调用该项的
updatePolish()
。- releaseResources()#
当项应该释放由
updatePaintNode()
返回的节点管理的图形资源时,将调用此函数。当该项即将从之前渲染到的窗口中删除时,会发生这种情况。当函数被调用时,该项目保证有一个
window
。此函数在 GUI 线程上调用,当使用时渲染线程的状态是未知的。对象不应直接删除,而应使用
scheduleRenderJob()
调度清理。另见
图形资源处理
- resetAntialiasing()#
属性
antialiasing
的重置函数。- resetHeight()#
属性
height
的重置功能。- resetWidth()#
属性
width
的重置功能。- rotation()#
- 返回类型:
float
属性
rotation
的获取器。- rotationChanged()#
属性
rotation
的通知信号。- scale()#
- 返回类型:
float
另见
属性
scale
的获取器。- scaleChanged()#
属性
scale
的通知信号。- scopedFocusItem()#
- 返回类型:
如果此项目是焦点范围,则返回当前具有焦点的焦点链中的项目。
如果没有此项目是焦点范围,则返回
None
。- setAcceptHoverEvents(enabled)#
- 参数:
enabled – bool
如果
enabled
为 true,则将项目设置为接收悬停事件;否则,此项目不接受悬停事件。- setAcceptTouchEvents(accept)#
- 参数:
accept – bool
如果
enabled
为 true,则将项目设置为接收触摸事件;否则,此项目不接受触摸事件。- setAcceptedMouseButtons(buttons)#
- 参数:
buttons –
MouseButton
的组合
将此项目接受的鼠标按钮设置为
buttons
。注意
在Qt 5中,调用setAcceptedMouseButtons()隐式地使一个项目接收触摸事件以及鼠标事件;但建议调用
setAcceptTouchEvents()
来订阅它们。在Qt 6中,必须调用setAcceptTouchEvents()
以继续接收它们。- setActiveFocusOnTab(arg__1)#
- 参数:
arg__1 – bool
设置属性
activeFocusOnTab
的值。- setAntialiasing(arg__1)#
- 参数:
arg__1 – bool
设置属性
antialiasing
的值。- setBaselineOffset(arg__1)#
- 参数:
arg__1 – float
设置属性
baselineOffset
的值。设置属性
clip
的值。设置属性
containmentMask
的值。设置此项目的光标形状。
- setEnabled(arg__1)#
- 参数:
arg__1 – bool
另见
设置属性
Enabled
的值。- setFiltersChildMouseEvents(filter)#
- 参数:
filter – bool
设置是否应将指向此项目子项的指针事件通过此项目进行过滤。
如果
filter
为 true,则在触发子项的指针事件时将调用childMouseEventFilter()
。当 enabled 为 true 时,为该项目启用指定的
flag
;如果 enabled 为 false,则禁用标志。这为项目提供各种提示;例如,
ItemClipsChildrenToShape
标志表示应将此项目的所有子项剪裁以适合项区域。为该项目启用指定的
flags
。- setFocus(arg__1)#
- 参数:
arg__1 – bool
另见
属性
focusᅟ
的设置器。- setFocus(focus, reason)
- 参数:
focus – bool
reason –
FocusReason
- setFocusPolicy(policy)#
- 参数:
policy –
FocusPolicy
将此项目的焦点策略设置为
policy
。属性
focusPolicyᅟ
的设置器。设置属性
height属性
的值。- setImplicitHeight(arg__1)#
- 参数:
arg__1 – float
设置属性
implicitHeight属性
的值。- setImplicitSize(arg__1, arg__2)#
- 参数:
arg__1 – float
arg__2 – 浮点数
- setImplicitWidth(arg__1)#
- 参数:
arg__1 – float
设置属性
implicitWidth属性
的值。- setKeepMouseGrab(arg__1)#
- 参数:
arg__1 – bool
设置是否将鼠标输入专用于此项目。
对于希望在预定义手势之后抓取并保持鼠标交互的项目很有用。例如,一个关心水平鼠标移动的项目在超过阈值后可以将
keepMouseGrab方法
设置为 true。一旦keepMouseGrab方法
被设置为 true,过滤项目将不会对鼠标事件做出反应。如果
keep
为 false,过滤项目可能会偷走抓取。例如,如果 Flickable 检测到用户开始移动视口,它可能会尝试偷取一个鼠标抓取。- setKeepTouchGrab(arg__1)#
- 参数:
arg__1 – bool
设置被此项目抓取的触摸点是否应专属于此项目。
对于希望在预定义手势之后抓取并保持特定触摸点的项目很有用。例如,一个关心水平触摸点移动的项目在超过阈值后可以将
setKeepTouchGrab
设置为 true。一旦setKeepTouchGrab
被设置为 true,过滤项目将不会对相关触摸点做出反应。如果
keep
为 false,过滤项目可能会偷走抓取。例如,如果 Flickable 检测到用户开始移动视口,它可能会尝试偷走一个触摸点抓取。属性
opacity
的设置器。- setParentItem(parent)#
- 参数:
parent –
QQuickItem
另见
属性
parent
的设置器。- setRotation(arg__1)#
- 参数:
arg__1 – float
另见
属性
rotation
的设置器。属性
scale
的设置器。将项的大小设置为
size
。此方法保留对宽度和高度现有绑定,因此任何触发绑定的更改将覆盖设置的值。属性
smooth
的设置器。属性 state 的设置器。
- setTransformOrigin(arg__1)
- 参数:
arg__1 – TransformOrigin
属性 transformOrigin 的设置器。
- setTransformOriginPoint(arg__1)
- 参数:
arg__1 –
QPointF
属性 visible 的设置器。
属性 width 的设置器。
属性 x 的设置器。
属性 y 的设置器。
属性 z 的设置器。
返回项的大小。
属性 smooth 的获取器。
属性
smooth
的通知信号。- stackAfter(arg__1)#
- 参数:
arg__1 –
QQuickItem
将指定的
sibling
素件移动到子元素列表中该元素之后的索引位置。子元素的顺序会影响视觉堆叠顺序和标签页焦点导航顺序。假设两个元素的 Z 值相同,这将导致
sibling
在此元素下方渲染。如果两个元素都将
activeFocusOnTab
设置为true
,这将也会导致标签页焦点顺序的改变,使得sibling
在此元素之前获得焦点。给定的
sibling
必须是该元素的兄弟;也就是说,它们必须有相同的直接parent
。- stackBefore(arg__1)#
- 参数:
arg__1 –
QQuickItem
将指定的
sibling
素件移动到子元素列表中该元素之前的索引位置。子元素的顺序会影响视觉堆叠顺序和标签页焦点导航顺序。假设两个元素的 Z 值相同,这将导致
sibling
在此元素上方渲染。如果两个元素都将
activeFocusOnTab
设置为true
,这将也会导致标签页焦点顺序的改变,使得sibling
在此元素之后获得焦点。给定的
sibling
必须是该元素的兄弟;也就是说,它们必须有相同的直接parent
。- state()#
- 返回类型:
str
另见
属性
state
的获取器。- stateChanged(arg__1)#
- 参数:
arg__1 – str
属性
state
的通知信号。- textureProvider()#
- 返回类型:
返回项的纹理提供程序。默认实现返回
None
。此函数只能在渲染线程上调用。
- touchEvent(event)#
- 参数:
事件 –
QTouchEvent
此事件处理器可以被子类重写以接收项目的触摸事件。事件信息通过参数
event
提供。默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- touchUngrabEvent()#
此事件处理器可以被重写在子类中,以便在项目上发生触摸未抓取事件时接收通知。
transformOrigin
属性的获取器。- transformOriginChanged(arg__1)#
- 参数:
arg__1 – TransformOrigin
transformOrigin
属性的通知信号。transformOriginPoint
属性的获取器。- ungrabMouse()#
使用 QPointerEvent::setExclusiveGrabber()。
在调用
grabMouse()
后释放鼠标抓取。请注意,此函数仅在项目希望停止处理进一步事件时调用。在释放或取消事件之后不需要调用此函数,因为无论如何都将接收不到未来的事件。在调用此函数后不会传递任何移动或释放事件。
- ungrabTouchPoints()#
使用QEventPoint::setExclusiveGrabber()代替。取消抓取此项拥有的触摸点。
- unsetCursor()#
清除此项目的光标形状。
- update()#
为此项目安排对
updatePaintNode()
的调用。如果项目在
QQuickWindow
中显示,将始终发生对updatePaintNode()
的调用。只有指定了
ItemHasContents
的项目才能调用 QQuickItem::update() 方法。- updateInputMethod([queries=Qt.ImQueryInput])#
- 参数:
queries – 结合了
InputMethodQuery
的查询
当需要时,通知输入法更新查询值。
queries
表示已更改的属性。在同步项目状态与场景图状态的时间点上,在渲染线程上调用。
当用户已在项目上设置了
ItemHasContents
标志时,此函数作为对update()
的调用结果。此函数应返回此项目的场景图子树的根。大多数实现将返回包含此项目可视表示的单个
QSGGeometryNode
。`oldNode
` 是上一次调用此函数时返回的节点。QSGNode *MyItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *) { QSGSimpleRectNode *n = static_cast<QSGSimpleRectNode *>(node); if (!n) { n = new QSGSimpleRectNode(); n->setColor(Qt::red); } n->setRect(boundingRect()); return n; }
当此函数执行时,主线程将被阻塞,因此可以安全地读取
QQuickItem
实例和其他主线程中的对象。如果没有 QQuickItem::updatePaintNode() 的调用导致实际场景图更改,例如
markDirty()
或添加和删除节点,那么底层实现可能会决定不再重新渲染场景,因为视觉结果相同。警告
图形操作与场景图交互必须在渲染线程上独家发生,尤其是在调用 QQuickItem::updatePaintNode() 时。最好的经验法则是仅在 QQuickItem::updatePaintNode() 函数中仅使用带有 "QSG" 前缀的类。
警告
此函数在渲染线程上调用。这意味着任何创建的 QObjects 或线程局部存储都将与渲染线程具有亲和力,因此在函数中执行除渲染之外的操作时请格外小心。对于信号,这些信号将在渲染线程上发出,因此通常将通过排队连接传送。
注意
应仅在场景图的渲染线程上使用所有带有QSG前缀的类。有关更多信息,请参阅《场景图和渲染》。
另见
QSGMaterial
QSGGeometryNode
QSGGeometry
QSGFlatColorMaterial
QSGTextureMaterial
markDirty()
Graphics Resource Handling
- updatePolish()#
此函数应执行为此项所需的任何布局。
当调用
polish()
时,场景图为此项调度一个抛光事件。当场景图准备好渲染此项时,它通过调用 updatePolish() 来执行任何所需的项目布局,然后再渲染下一帧。- viewportItem()#
- 返回类型:
如果设置了
ItemObservesViewport
标志,则返回最近的具有ItemIsViewport
标志的父元素。如果没有设置此标志,或找不到其他视口元素,则返回窗口的内容项。如果没有任何视口元素并且此项目不在窗口中显示,则返回
None
。另见
- visibleChanged()#
属性
visible
的通知信号。- visibleChildrenChanged()#
- wheelEvent(event)#
- 参数:
event –
QWheelEvent
可以在这个子类中重新实现此事件处理程序,以接收项目的滚轮事件。事件信息由 `event` 参数提供。
默认情况下,事件被接受,因此如果重新实现此函数,不必显式接受事件。如果不接受事件,调用
event->ignore()
。- 宽度()#
- 返回类型:
float
另见
属性
width
的获取器。- widthChanged()#
属性
width
的变化通知信号。- widthValid()#
- 返回类型:
bool
返回宽度属性是否被显式设置。
- 窗口()#
- 返回类型:
返回渲染此元素的窗口。
元素在将其分配到场景之前没有窗口。当元素进入或从场景中移除时,
windowChanged()
信号发出通知。- windowChanged(窗口)#
- 参数:
窗口 –
QQuickWindow
当元素窗口
window
发生变化时,发出此信号。属性
x
的获取器。- xChanged()#
属性
x
的变化通知信号。属性
y
的获取器。- yChanged()#
属性
y
的变化通知信号。属性
z
的获取器。- zChanged()#
属性
zᅟ
的通知信号。