本页内容

Qt3DRender::QObjectPicker Class

class Qt3DRender::QObjectPicker

QObjectPicker 类会实例化一个组件,该组件可通过一种称为“选择”的过程与 QEntity 进行交互。更多内容...

头文件: #include <qobjectpicker.h>
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)

详细说明

对于每个视口和摄像机的组合,拾取操作会向场景中投射一条光线,以查找其包围体与该光线相交的实体。包围体是通过几何体的 `boundingVolumePositionAttribute` 指定的属性缓冲区中的值计算得出的。

当由 pickAttribute 属性定义的包围体与光线相交时,将发出以下信号:pressed()、released()、clicked()、moved()、entered() 以及exited()。

大多数信号都携带一个 `QPickEvent ` 实例。如果 `QPickingSettings::pickMode()` 设置为 `QPickingSettings::TrianglePicking`,则 `pick` 参数的实际类型将为 `QPickTriangleEvent`。

拾取查询在鼠标按下和释放时执行。如果启用了拖动功能,则在按住任何按钮时,每次鼠标移动也会触发查询。如果启用了悬停功能,即使未按下任何按钮,每次鼠标移动也会触发查询。

有关通用的射线投射查询,请参阅Qt3DRender::QRayCaster 和Qt3DRender::QScreenRayCaster 。

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

注意:摄像机的 远平面值 会影响拾取操作;若该值大于 ~100 000,则会因浮点精度问题导致结果不正确。

另请参阅 Qt3DRender::QPickingSettings 、Qt3DCore::QGeometry 、Qt3DCore::QAttribute 、Qt3DRender::QPickEvent 、Qt3DRender::QPickTriangleEvent 以及Qt3DRender::QNoPicking 。

属性文档

[read-only] containsMouse : 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 : 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)

成员函数文档

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

当由 pickAttribute 属性定义的包围体与鼠标点击时产生的射线发生相交时,会发出此信号。QPickEvent 对象pick 中包含该事件的详细信息。

bool QObjectPicker::containsMouse() const

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

注意: 这是 properties 中的 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 属性定义的边界体与光线发生相交时,会发出此信号;QPickEventpick 中包含该事件的详细信息。

[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()。

© 2026 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.