Я использую Qt 5.7 (последняя версия). Я не могу заставить события мыши работать в QGraphicsScene, но они работают в окне вне моей сцены. Я следовал за этим question.События мыши Qt не работают в QGraphicsScene
Так я перезаписаны QWidget::mouseMoveEvent()
в подклассе моего главного виджета, как это:
// header:
class MyWidget {
...
void mouseMoveEvent(QMouseEvent * event);
};
// source:
MyWidget::MyWidget() {
setMouseTracking();
}
void MyWidget::mouseMoveEvent(QMouseEvent * event) {
}
Это не работает: mouseMoveEvent
, mouseGrabber
, mousePressEvent
, mouseReleaseEvent
или mouseDoubleClickEvent
. Но почему-то это работает только для mousePressEvent
.
Это может быть ошибка в Qt?
ИСХОДНЫЙ КОД: В objectloader.cpp
ObjectLoader::ObjectLoader(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ObjectLoader)
{
ui->setupUi(this);
scene=new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
ui->graphicsView->setMouseTracking(true);
setMouseTracking(true);
}
То были я установить отслеживание мыши дважды В objectloader.h Тогда я определить этот метод в objectloader.h
class ObjectLoader : public QMainWindow
{
Q_OBJECT
public:
explicit ObjectLoader(QWidget *parent = 0);
~ObjectLoader();
private slots:
void mouseMoveEvent(QMouseEvent *event);
protected:
private:
};
#endif // OBJECTLOADER_H
И реализация этого метода в objectloader.cpp
void ObjectLoader::mouseMoveEvent(QMouseEvent *event){
qDebug()<<"Mouse moved";
}
Я уверен, что он включен. Когда я запустил этот код if (hasMouseTracking()) {qDebug() << "true";} Он возвращает true –
Не могли бы вы разместить свой источник? – hyun
Уверен, всего лишь секунд –