QObjectPicker 类
class Qt3DRender::QObjectPickerQObjectPicker 类实例化一个可用于通过拾取过程与 QEntity 交互的组件。更多...
头文件 | #include <QObjectPicker> |
CMake | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake | QT += 3drender |
由以下实例化 | ObjectPicker |
继承 | Qt3DCore::QComponent |
属性
|
公共函数
bool | containsMouse() const |
bool | isDragEnabled() const |
bool | isHoverEnabled() const |
bool | isPressed() const |
int | priority() const |
公共槽
void | setDragEnabled(bool dragEnabled) |
void | setHoverEnabled(bool hoverEnabled) |
void | setPriority(int priority) |
信号
void | clicked(Qt3DRender::QPickEvent *pick) |
void | containsMouseChanged(bool containsMouse) |
void | dragEnabledChanged(bool dragEnabled) |
void | entered() |
void | exited() |
void | hoverEnabledChanged(bool hoverEnabled) |
void | moved(Qt3DRender::QPickEvent *pick) |
void | pressed(Qt3DRender::QPickEvent *pick) |
void | pressedChanged(bool pressed) |
void | priorityChanged(int priority) |
void | released(Qt3DRender::QPickEvent *pick) |
详细说明
对于每个视口和相机的组合,拾取通过场景中的线投射一条光线以找到与其边界体积相交的实体。边界体积使用几何的 boundingVolumePositionAttribute 指定的属性缓冲区中的值计算得出的。
当由pickAttribute属性定义的边界体积与射线相交时,将触发信号pressed()、released()、clicked()、moved()、entered()和exited()。
大多数信号携带QPickEvent实例。如果QPickingSettings::pickMode()设置为QPickingSettings::TrianglePicking,则拾取参数的实际类型将是QPickTriangleEvent。
拾取查询在鼠标按下和释放时执行。如果启用了拖动,则在不按任何按钮的情况下,在每次鼠标移动时也会发生查询。如果启用了悬停,则在每次鼠标移动时都会发生查询,即使没有按钮被按下。
有关通用射线投射查询,请参阅Qt3DRender::QRayCaster和Qt3DRender::QScreenRayCaster。
注意:此组件的实例不应共享,如果不遵守此条件,则很可能会导致未定义的行为。
注意:相机远平面值会影响拾取并产生不正确的结果,因为如果是大于~100 000,由于浮点精度的问题可能会导致不正确。
参见:Qt3DRender::QPickingSettings、Qt3DCore::QGeometry、Qt3DCore::QAttribute、Qt3DRender::QPickEvent、Qt3DRender::QPickTriangleEvent和Qt3DRender::QNoPicking。
属性文档
[只读]
containsMouse : const bool
指定对象拾取器当前是否包含鼠标
访问函数
bool | containsMouse() const |
通知信号
void | containsMouseChanged(bool containsMouse) |
dragEnabled : bool
指定是否启用了拖动
访问函数
bool | isDragEnabled() const |
void | setDragEnabled(bool dragEnabled) |
通知信号
void | dragEnabledChanged(bool dragEnabled) |
hoverEnabled : bool
指定是否启用了悬停
访问函数
bool | isHoverEnabled() const |
void | setHoverEnabled(bool hoverEnabled) |
通知信号
void | hoverEnabledChanged(bool hoverEnabled) |
[只读]
pressed : const bool
指定对象拾取器当前是否按下
访问函数
bool | isPressed() const |
通知信号
void | pressedChanged(bool pressed) |
priority : int
当QPickingSettings::pickResultMode设置为QPickingSettings::NearestPriorityPick时,过滤拾取结果时使用的优先级。
访问函数
int | priority() const |
void | setPriority(int priority) |
通知信号
void | priorityChanged(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 公司的商标。所有其它商标均为其各自所有者的财产。