在不使用滚动按钮的情况下放大/缩小QT
Zoom in / Zoom out in QT without using scroll button
我想在 openGL 中使用鼠标缩放 in/out 一部分。现在我可以使用鼠标中的滚动按钮很好地完成它。但我现在的目标是通过按住鼠标左键并在屏幕中来回移动鼠标来执行相同的操作。
我不知道如何通过检测鼠标的来回运动来执行缩放动作。
// 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();
}
现在我想使用鼠标移动和鼠标按下事件执行相同的操作。我无法选择检测来回运动的事件
现在我找到了解决办法。找到当前和之前的 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;
}
我想在 openGL 中使用鼠标缩放 in/out 一部分。现在我可以使用鼠标中的滚动按钮很好地完成它。但我现在的目标是通过按住鼠标左键并在屏幕中来回移动鼠标来执行相同的操作。
我不知道如何通过检测鼠标的来回运动来执行缩放动作。
// 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();
}
现在我想使用鼠标移动和鼠标按下事件执行相同的操作。我无法选择检测来回运动的事件
现在我找到了解决办法。找到当前和之前的 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;
}