【问题标题】:QObjectPicker in Qt3D and setting PointPicking does not workQt3D中的QObjectPicker和设置PointPicking不起作用
【发布时间】:2018-04-20 14:42:46
【问题描述】:

我想使用点选择器在点云中选择(获取)我的点的坐标。这就是为什么我想将QPickingSettings 设置为PointPicking 但似乎无法做到。发送到方法mouse_event 的事件是QPickEvent 类型而不是QPickPointEvent。我做错了什么?

self.picker = Qt3DRender.QObjectPicker(self)
picking_settings = Qt3DRender.QPickingSettings(self.picker)
picking_settings.setFaceOrientationPickingMode(
    Qt3DRender.QPickingSettings.FrontAndBackFace)  
# set QObjectPicker to PointPicking:
picking_settings.setPickMethod(
    Qt3DRender.QPickingSettings.PointPicking)
picking_settings.setPickResultMode(
    Qt3DRender.QPickingSettings.NearestPick)
picking_settings.setWorldSpaceTolerance(.5)

self.picker.setHoverEnabled(True)
self.picker.setDragEnabled(True)

def mouse_event(e):
    # do something
    # e should be QPickPointEvent type
    pass

self.picker.moved.connect(mouse_event)
self.picker.pressed.connect(mouse_event)
self.picker.clicked.connect(mouse_event)
self.picker.released.connect(mouse_event)
self.addComponent(self.picker)

【问题讨论】:

    标签: python-3.x pyqt5 qt3d pyside2


    【解决方案1】:

    我不熟悉 python API,但您不应创建自己的 QPickingSettings 实例,而应使用作为 QRenderSettings 实例属性存在的实例(即单例)。

    如果您使用来自 Qt3DExtras 的 Qt3DWindow,它将提供 QRenderSettings 实例的访问器。

    否则,您需要创建 QRenderSettings 的实例并将其添加为实体的组件。按照惯例,我们倾向于使用场景图的根。

    【讨论】:

    • 谢谢。 QRenderSettings 实例可通过Qt3DWindow 获得,我可以在那里设置点选择。现在可以了!
    猜你喜欢
    • 2021-02-21
    • 2019-09-04
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2018-10-01
    相关资源
    最近更新 更多