我有以下类:
class Curve2DOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_3_3_Core {
Q_OBJECT
public:
Curve2DOpenGLWidget( QWidget* parent = nullptr );
~Curve2DOpenGLWidget();
void initializeGL() override;
void resizeGL(int width, int height) override;
void paintGL() override;
void NativePaintGL();
protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
};
我想在我的场景中使用wheelEvent来缩放。
以下是代码:
void Curve2DOpenGLWidget::wheelEvent( QWheelEvent* event ) {
QOpenGLWidget::wheelEvent(event);
float numStep = (event->angleDelta().y() / 8) / 15;
m_camera.MoveFront(numStep * 0.1f);
}
它做我想要的事情,但当我同时移动鼠标并使用鼠标滚轮时,该事件不会被调用。
这个代码在我实现的所有其他小部件(QGraphicsView等)上都运行良好。我想知道在QOpenGLWidget上是否有什么特别的工作要做?
我无法解释这种行为…如果可以帮助的话,我正在使用Ubuntu 14.04 LTS。