Qt: 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
}

Проблема в том, что тип события MouseMove не работает.

Любая идея?

1

Решение

Вы должны сказать 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
}
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]