如何改变Qt3D OrbitCameraController的行为,例如。用鼠标左键旋转相机

时间:2017-07-18 06:12:59

标签: qt3d

默认的Qt3D OrbitCameraController的行为是: - 鼠标左键移动相机。 - 用鼠标右键旋转相机。

我需要相反的解决方案,只需旋转显示产品型号。 C ++代码或AxisActionHandler可能有用,但我不知道如何编写它。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

尝试不同的解决方案后,我使用MouseHandler完成此任务。核心代码如下:

Entity{
  id: root
  property Camera camera;
  MouseDevice {
    id: mouseDevice
  }
  MouseHandler {
    property point _lastPt;   // 鼠标最后的位置
    property real _pan;       // 相机沿y轴旋转角度
    property real _tilt;      // 相机沿x轴旋转角度
    on_PanChanged: root.camera.panAboutViewCenter(_pan);
    on_TiltChanged: root.camera.tiltAboutViewCenter(_tilt);

    sourceDevice: mouseDevice
    onPressed: {_lastPt = Qt.point(mouse.x, mouse.y);}
    onPositionChanged: mouseMove(mouse);
    ...
    function mouseMove(mouse){
        if (mouse.buttons == 1){
            _pan = -(mouse.x - _lastPt.x);
            _tilt = (mouse.y - _lastPt.y);
            _lastPt = Qt.point(mouse.x, mouse.y);
        }
    }
  }
}