1 c++ mouse qt mouseevent mousemove
在我的Qt应用程序中,我需要跟踪鼠标移动.为此,我创建了一个eventfilter,我正确安装它,因为:
bool iArmMainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::MouseMove)//not working
{
iarm->printStatus("hi"); //this is for debugging
}
if (event->type() == QEvent::MouseButtonPress){
//Here some staff working correctly
}
//other staff
}
Run Code Online (Sandbox Code Playgroud)
问题是事件类型MouseMove不起作用.
任何的想法?
您应该对Qt说,您希望通过setMouseTracking()函数获取鼠标移动事件.请注意,在安装过滤器之前应该调用它(例如在小部件的子类的c-tor中).我会建议你更简单一些,而不是安装事件过滤器:只是在你的widget的子类中覆盖QWidget :: mouseMoveEvent().像这样:
// header:
class MyWidget {
...
void mouseMoveEvent( QMouseEvent * event );
};
// source:
MyWidget::MyWidget() {
setMouseTracking(true); //enables mouse tracking
}
void MyWidget::mouseMoveEvent( QMouseEvent * event ) {
// do what you want
}
Run Code Online (Sandbox Code Playgroud)