По какой-то причине использование функции addWidget в классе QGraphicsScene приводит к тому, что связанный виджет QGraphicsView получает mouseMoveEvents без нажатия кнопки мыши и отключения отслеживания мыши.
MyView.h :
#include "MyView.h"
MyView::MyView(QGraphicsScene* scene, QWidget* parent)
: QGraphicsView(scene, parent)
{}
void MyView::mouseMoveEvent(QMouseEvent* event)
{
qDebug() hasMouseTracking(); // indicating that the event goes on
// even though I dont't press any buttons
// and mouse tracking is disabled by default
}
MyView::~MyView()
{}
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);
Это происходит только после добавления QWidget или его подкласса в сцену.
Версия Qt — 6.7.0
По какой-то причине использование функции addWidget в классе QGraphicsScene приводит к тому, что связанный виджет QGraphicsView получает mouseMoveEvents без нажатия кнопки мыши и отключения отслеживания мыши. MyView.h : [code]#pragma once
#include #include #include class MyView : public QGraphicsView // subclassing QGraphicsView { Q_OBJECT protected: void mouseMoveEvent(QMouseEvent* event);
void MyView::mouseMoveEvent(QMouseEvent* event) { qDebug() hasMouseTracking(); // indicating that the event goes on // even though I dont't press any buttons // and mouse tracking is disabled by default }
MyView::~MyView() {} [/code] QMainWindow.cpp: [code]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); [/code] Это происходит только после добавления QWidget или его подкласса в сцену. Версия Qt — 6.7.0