Генерация событий мыши с использованием Qt framework

Я использую структуру Qt, и я хотел бы генерировать события мыши за пределами окна моего приложения.

До сих пор мне удалось переместить указатель мыши, используя:

QGuiApplication::overrideCursor()->setPos(x,y);

Как я могу также генерировать щелчок левой кнопкой мыши, щелчок средней кнопкой, щелчок правой кнопкой и движение колесика мыши?


person Yiannis Mpourkelis    schedule 08.10.2014    source источник


Ответы (3)


Несколько лет назад я написал драйверы для тестирования графического интерфейса (для мыши и клавиатуры). Драйвера разработаны для Windows, Linux и MacOS X. Посмотреть можно на здесь. Существует реализация MouseDriver, зависящая от ОС, для Windows. Также вы можете увидеть другие реализации. Это проект с открытым исходным кодом, вы можете использовать его код бесплатно.

person Kastaneda    schedule 09.10.2014
comment
Спасибо Кастанеда. Мой проект также с открытым исходным кодом, поэтому я думаю, что буду использовать ваш код и упомяну вас в лицензии. Насколько хорошо ваш код протестирован? Есть ли известные ошибки в этом коде? - person Yiannis Mpourkelis; 09.10.2014
comment
Этот код используется около 3 лет. Он используется для написания тестов GUI. Я думаю, что все очевидные ошибки уже исправлены. Вы должны найти последнюю версию кода в репозитории кода, чтобы свести к минимуму вероятность наличия ошибок. - person Kastaneda; 10.10.2014

В Qt этого сделать нельзя. Используйте API, специфичные для вашей целевой платформы.

person Oleg Shparber    schedule 08.10.2014

Дополнение к первому ответу. Например в Windows:

Нажмите:

mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);

Рулевое колесо:

mouse_event(MOUSEEVENTF_WHEEL, 0, 0, WHEEL_DELTA, NULL);

Дополнительные сведения: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx

Используйте также макросы qt:

#ifdef Q_WS_X11
//Linux
#endif
#ifdef Q_WS_WIN
//Windows
#endif
#ifdef Q_WS_MACX
//Mac
#endif

Подробнее о макросах: http://qt-project.org/doc/qt-5/qtglobal.html

QSysInfo: http://qt-project.org/doc/qt-5/qsysinfo.html

person Kosovan    schedule 09.10.2014