For some reason using addWidget function in QGraphicsScene class makes the related QGraphicsView widget receive mouseMoveEvents without mousebutton pressed and mouse tracking off.
MyView.h :
#pragma once
#include <qgraphicsview>
#include <qevent>
#include <qgraphicsscene>
class MyView : public QGraphicsView // subclassing 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(); // indicating that the event goes on
// even though I dont't press any buttons
// and mouse tracking is disabled by default
}
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);
This happens only after adding QWidget or its subclass in the scene.
Qt version is 6.7.0
New contributor
widejaw78 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.