В моем приложении 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
}
Других решений пока нет …