【发布时间】:2016-08-21 22:27:14
【问题描述】:
我使用的是 Qt 5.7(最新版本)。我无法让鼠标事件在 QGraphicsScene 中工作,但它们在我的场景之外的窗口中工作。我关注了这个question.
所以我在我的主小部件的子类中覆盖了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";
}
【问题讨论】:
标签: c++ qt user-interface mouse mousemove