[英]Qt: MouseMove not functioning
在我的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
}
問題是事件類型MouseMove不起作用。
任何想法?
您應該對Qt說,您想通過setMouseTracking()函數獲取鼠標移動事件。 請注意, 在安裝過濾器之前應先調用它(例如,在小部件的子類的c-tor中)。 我建議您使用一種更簡單的方法,而不是安裝事件過濾器:只需在小部件的子類中覆蓋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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.