Qt3DRender::QObjectPicker Class
class Qt3DRender::QObjectPickerQObjectPicker 类实例化了一个组件,可用于通过称为 "拾取 "的过程与 QEntity 进行交互。更多
头文件: | #include <QObjectPicker> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
qmake: | QT += 3drender |
在 QML 中: | 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) |
详细说明
对于视口和摄像头的每种组合,picking 都会在场景中投射一条射线,以查找与射线相交的实体边界体。边界体积是使用几何体的边界体积位置属性(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 。
属性文档
[read-only]
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) |
[read-only]
pressed : const bool
指定当前是否已按下对象选取器
访问功能:
bool | isPressed() const |
通知信号:
void | pressedChanged(bool pressed) |
priority : int
当QPickingSettings::pickResultMode 设置为QPickingSettings::NearestPriorityPick 时,按优先级筛选提取结果时使用的优先级。
访问功能:
int | priority() const |
void | setPriority(int priority) |
Notifier 信号:
void | priorityChanged(int priority) |
成员函数 文档
[signal]
void QObjectPicker::clicked(Qt3DRender::QPickEvent *pick)
当 pickAttribute 属性定义的边界体与鼠标点击的射线相交时,就会发出该信号。QPickEvent pick 包含事件的详细信息。
bool QObjectPicker::containsMouse() const
如果对象选取器当前包含鼠标,则返回 true
注: 属性 containsMouse 的获取函数。
[signal]
void QObjectPicker::entered()
当 pickAttribute 属性定义的边界体与进入该边界体的鼠标光线相交时,会发出该信号。
[signal]
void QObjectPicker::exited()
当 pickAttribute 属性所定义的边界体与射线相交时,从边界体流出的射线会发出该信号。
bool QObjectPicker::isDragEnabled() const
如果启用拖动,则返回 true
注: 属性dragEnabled 的获取函数。
bool QObjectPicker::isHoverEnabled() const
如果启用了悬停功能,则返回 true
注: 属性hoverEnabled 的获取函数。
[signal]
void QObjectPicker::moved(Qt3DRender::QPickEvent *pick)
当 pickAttribute 属性定义的边界体在按下按钮移动鼠标时与射线相交时,就会发出该信号,QPickEvent pick 包含事件的详细信息。
[signal]
void QObjectPicker::pressed(Qt3DRender::QPickEvent *pick)
当 pickAttribute 属性定义的边界体与鼠标按下的光线相交时,就会发出该信号。QPickEvent pick 包含事件的详细信息。
[signal]
void QObjectPicker::released(Qt3DRender::QPickEvent *pick)
当 pickAttribute 属性定义的边界体与鼠标释放的射线相交时,就会发出该信号。QPickEvent pick 包含事件的详细信息。
[slot]
void QObjectPicker::setDragEnabled(bool dragEnabled)
将dragEnabled 属性设置为dragEnabled
注: 属性dragEnabled 的设置函数。
另请参阅 isDragEnabled().
[slot]
void QObjectPicker::setHoverEnabled(bool hoverEnabled)
将hoverEnabled 属性设置为hoverEnabled
注: 属性hoverEnabled 的设置函数。
另请参阅 isHoverEnabled().
[slot]
void QObjectPicker::setPriority(int priority)
将拣选器的优先级设置为priority 。当QPickingSettings 上的拣选结果模式设置为QPickingSettings::NearestPriorityPick 时使用。拣选结果按最高优先级和最短拣选距离排序。
注: 属性priority 的设置函数。
另请参阅 priority() 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.