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()不會被調用,而是同時移動它。 –