Qt 6.7.0中QGraphicsView未按鼠标仍持续接收mouseMoveEvent问题
Qt 6.7.0中QGraphicsView异常触发mouseMoveEvent的问题
在Qt 6.7.0版本中存在以下异常现象:当使用QGraphicsScene::addWidget()函数将QWidget或其子类添加到场景后,关联的QGraphicsView部件会在未按下任何鼠标按钮、且鼠标追踪(mouse tracking)处于关闭状态的情况下,持续接收mouseMoveEvent事件。该现象仅在场景中添加了QWidget类实例后才会出现。
复现代码
MyView.h
#pragma once #include <qgraphicsview> #include <qevent> #include <qgraphicsscene> class MyView : public QGraphicsView // 继承QGraphicsView { Q_OBJECT protected: void mouseMoveEvent(QMouseEvent* event); public: MyView(QGraphicsScene* scene, QWidget *parent); ~MyView(); };
MyView.cpp
#include "MyView.h" MyView::MyView(QGraphicsScene* scene, QWidget* parent) : QGraphicsView(scene, parent) {} void MyView::mouseMoveEvent(QMouseEvent* event) { qDebug() << this->hasMouseTracking(); // 输出表明即使未按下按钮且鼠标追踪关闭,事件仍持续触发 } MyView::~MyView() {}
QMainWindow.cpp
QVBoxLayout* layout = new QVBoxLayout(); ui.centralWidget->setLayout(layout); QGraphicsScene* scene = new QGraphicsScene(); scene->addWidget(new QWidget()); MyView* v = new MyView(scene, ui.centralWidget); layout->addWidget(v);
内容的提问来源于stack exchange,提问作者widejaw78
相关产品推荐
相关产品推荐

