Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: bosfor от Октябрь 24, 2012, 09:34



Название: Получать сигнал движения мыши от дочерних окон
Отправлено: bosfor от Октябрь 24, 2012, 09:34
В MainWindow переопределяю функцию mouseMoveEvent(QMouseEvent *). Но срабатывает она только при движении мыши в зонах не занятыми дочерними виджатами.
Как получать глобальный сигнал о движении мыши. Нужно просто как в скринсавере отследить активность мыши.  ??


Название: Re: Получать сигнал движения мыши от дочерних окон
Отправлено: GreatSnake от Октябрь 24, 2012, 10:17
Код
C++ (Qt)
bool QCoreApplication::notify ( QObject * receiver, QEvent * event ) [virtual]


Название: Re: Получать сигнал движения мыши от дочерних окон
Отправлено: bosfor от Ноябрь 01, 2012, 10:11
Код
C++ (Qt)
bool QCoreApplication::notify ( QObject * receiver, QEvent * event ) [virtual]
у меня приложения на основе QMainWindow - помогите примером где мне унаследовать эту функцию ?


Название: Re: Получать сигнал движения мыши от дочерних окон
Отправлено: GreatSnake от Ноябрь 01, 2012, 10:51
А причём тут QMainWindow ???
Открываешь в ассистенте описание QCoreApplication и видишь что последний является базовым для QApplication.
Далее просто перегружаешь QApplication::notify():
Код
C++ (Qt)
class MyApplication : public QApplication
{
public:
MyApplication( int& argc, char** argv )
: QApplication( argc, argv ) {}
bool notify( QObject* o, QEvent* e )
{
if( e->type() == QEvent::MouseMove )
{
QMouseEvent* me = static_cast< QMouseEvent* >( e );
// ...
}
return QApplication::notify( o, e );
}
};
 
int main( int argc, char** argv )
{
MyApplication app( argc, argv );
 
...
 
return app.exec();
}