父窗口有设置 MouseTracking 时,还是无法跟踪鼠标移动事件
通过向导创建了一个最普通的 MainWindow 程序,然后在 MainWindow 的构造函数中添加了一个子窗口:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); EditView* editView = new EditView(this); editView->move(QPoint(0, 0)); editView->resize(100, 100);}
#ifndef EDITVIEW_H#define EDITVIEW_H#include <QWidget>class EditView : public QWidget{ Q_OBJECTpublic: explicit EditView(QWidget *parent = 0); signals: public slots: protected: void mouseMoveEvent(QMouseEvent *event);};#endif // EDITVIEW_H
#include "editview.h"#include <QtOpenGL/QGLWidget>EditView::EditView(QWidget *parent) : QWidget(parent){ // 在这里只要放入子窗口,鼠标不按住就无法响应到 mouseMoveEvent 事件,不放子窗口就可以响应,这是怎么回事? // 该如何解决? // QGLWidget *widget = new QGLWidget(QGLFormat(QGL::SampleBuffers), this); QWidget *widget = new QWidget(this); widget->resize(QSize(100, 100)); widget->move(0, 0); setMouseTracking(true);}void EditView::mouseMoveEvent(QMouseEvent *event){ setCursor(Qt::SizeBDiagCursor);}