QObjectPicker 类

class Qt3DRender::QObjectPicker

QObjectPicker 类实例化一个可用于通过拾取过程与 QEntity 交互的组件。更多...

头文件 #include <QObjectPicker>
CMakefind_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmakeQT += 3drender
由以下实例化 ObjectPicker
继承 Qt3DCore::QComponent

属性

公共函数

boolcontainsMouse() const
boolisDragEnabled() const
boolisHoverEnabled() const
boolisPressed() const
intpriority() const

公共槽

voidsetDragEnabled(bool dragEnabled)
voidsetHoverEnabled(bool hoverEnabled)
voidsetPriority(int priority)

信号

voidclicked(Qt3DRender::QPickEvent *pick)
voidcontainsMouseChanged(bool containsMouse)
voiddragEnabledChanged(bool dragEnabled)
voidentered()
voidexited()
voidhoverEnabledChanged(bool hoverEnabled)
voidmoved(Qt3DRender::QPickEvent *pick)
voidpressed(Qt3DRender::QPickEvent *pick)
voidpressedChanged(bool pressed)
voidpriorityChanged(int priority)
voidreleased(Qt3DRender::QPickEvent *pick)

详细说明

对于每个视口和相机的组合,拾取通过场景中的线投射一条光线以找到与其边界体积相交的实体。边界体积使用几何的 boundingVolumePositionAttribute 指定的属性缓冲区中的值计算得出的。

当由pickAttribute属性定义的边界体积与射线相交时,将触发信号pressed()、released()、clicked()、moved()、entered()和exited()。

大多数信号携带QPickEvent实例。如果QPickingSettings::pickMode()设置为QPickingSettings::TrianglePicking,则拾取参数的实际类型将是QPickTriangleEvent

拾取查询在鼠标按下和释放时执行。如果启用了拖动,则在不按任何按钮的情况下,在每次鼠标移动时也会发生查询。如果启用了悬停,则在每次鼠标移动时都会发生查询,即使没有按钮被按下。

有关通用射线投射查询,请参阅Qt3DRender::QRayCasterQt3DRender::QScreenRayCaster

注意:此组件的实例不应共享,如果不遵守此条件,则很可能会导致未定义的行为。

注意:相机远平面值会影响拾取并产生不正确的结果,因为如果是大于~100 000,由于浮点精度的问题可能会导致不正确。

参见:Qt3DRender::QPickingSettingsQt3DCore::QGeometryQt3DCore::QAttributeQt3DRender::QPickEventQt3DRender::QPickTriangleEventQt3DRender::QNoPicking

属性文档

[只读] containsMouse : const bool

指定对象拾取器当前是否包含鼠标

访问函数

boolcontainsMouse() const

通知信号

voidcontainsMouseChanged(bool containsMouse)

dragEnabled : bool

指定是否启用了拖动

访问函数

boolisDragEnabled() const
voidsetDragEnabled(bool dragEnabled)

通知信号

voiddragEnabledChanged(bool dragEnabled)

hoverEnabled : bool

指定是否启用了悬停

访问函数

boolisHoverEnabled() const
voidsetHoverEnabled(bool hoverEnabled)

通知信号

voidhoverEnabledChanged(bool hoverEnabled)

[只读] pressed : const bool

指定对象拾取器当前是否按下

访问函数

boolisPressed() const

通知信号

voidpressedChanged(bool pressed)

priority : int

QPickingSettings::pickResultMode设置为QPickingSettings::NearestPriorityPick时,过滤拾取结果时使用的优先级。

访问函数

intpriority() const
voidsetPriority(int priority)

通知信号

voidpriorityChanged(int priority)

成员函数文档

[信号] void QObjectPicker::clicked(Qt3DRender::QPickEvent *pick)

当pickAttribute属性定义的边界体积与鼠标点击时的射线相交时,会发出此信号。QPickEvent pick包含事件的详细信息。

bool QObjectPicker::containsMouse() const

如果对象选择器当前包含鼠标,则返回true

注意:containsMouse属性的getter函数。

[信号] void QObjectPicker::entered()

当pickAttribute属性定义的边界体积与鼠标进入体积时的射线相交时,会发出此信号。

[信号] void QObjectPicker::exited()

当pickAttribute属性定义的边界体积与鼠标离开体积时的射线相交时,会发出此信号。

bool QObjectPicker::isDragEnabled() const

如果启用拖放,则返回true

注意:dragEnabled属性的getter函数。

bool QObjectPicker::isHoverEnabled() const

如果启用悬停,则返回true

注意:hoverEnabled属性的getter函数。

[信号] void QObjectPicker::moved(Qt3DRender::QPickEvent *pick)

当pickAttribute属性定义的边界体积与鼠标移动时按下的射线相交时,会发出此信号。QPickEvent pick包含事件的详细信息。

[信号] void QObjectPicker::pressed(Qt3DRender::QPickEvent *pick)

当pickAttribute属性定义的边界体积与鼠标按下时的射线相交时,会发出此信号。QPickEvent pick包含事件的详细信息。

[信号] void QObjectPicker::released(Qt3DRender::QPickEvent *pick)

当pickAttribute属性定义的边界体积与鼠标释放时的射线相交时,会发出此信号。QPickEvent pick包含事件的详细信息。

[槽] void QObjectPicker::setDragEnabled(bool dragEnabled)

dragEnabled属性设置为dragEnabled

注意:dragEnabled属性的setter函数。

另请参阅:isDragEnabled

[槽] void QObjectPicker::setHoverEnabled(bool hoverEnabled)

hoverEnabled属性设置为hoverEnabled

注意:hoverEnabled属性的setter函数。

另请参阅:isHoverEnabled

[槽] void QObjectPicker::setPriority(int priority)

设置拾取器的优先级为 priority。当 QPickingSettings 上的拾取结果模式设置为 QPickingSettings::NearestPriorityPick 时使用此功能。拾取结果将按优先级最高和拾取距离最短进行排序。

注意:该属性 priority 的设置函数。

另请参阅:priority

© 2024 Qt 公司。此处包含的文档贡献者是各自所有者版权的拥有者。提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授予的。Qt 和相应的标志是芬兰及其它国家/地区的 Qt 公司的商标。所有其它商标均为其各自所有者的财产。