1
我有下面的类:Qt的QOpenGLWidget wheelEvent奇怪的行为
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
setMouseTracking(真)不解决我的问题。当我使用鼠标滚轮时,wheelEvent()不会被调用,而是同时移动它。 –