1

我想用鼠标放大/缩小openGL中的一部分。现在我可以使用鼠标中的滚动按钮做得很好了。但我现在的目标是通过按住鼠标左键并在屏幕上来回移动鼠标来执行相同的操作。

我不知道如何通过检测鼠标的来回运动来执行缩放动作。

// function for mouse scroll events
void VDUI_GLWidget::wheelEvent (QWheelEvent * e) {
    // here comes the code for zoom in / out based on the scrolling
   MouseWheel (e->delta () / float (WHEEL_STEP), QTWheel2VCG (e->modifiers ()));
   updateGL();
}

现在我想使用鼠标移动和鼠标按下事件来执行相同的操作。我无法选择检测来回运动的事件

4

1 回答 1

1

现在我找到了解决方案。找到当前和之前 Y 轴位置之间的差异,我可以放大/缩小请参考下面提到的代码。

    // function for mouse move events
    void GLWidget::mouseMoveEvent (QMouseEvent * e) {
        static int curY = 0, prevY = 0;
        if (e->buttons()) {
            curY = e->y(); // current position of Y
            if( (curY - prevY) > 0 ) // call zoom in function
            else // call zoom out function
            updateGL();
        }
        prevY = curY;
    }
于 2019-09-16T12:19:22.990 回答