如何在Linux和Windows上的Qt中模拟所有鼠标和键盘事件

How can I simulate all mouse and keyboard events in Qt that works on Linux and Windows?

本文关键字:模拟 鼠标 事件 键盘 Qt Linux Windows 上的      更新时间:2023-10-16

问题:我有一个设备发送给我一些命令(例如:1,2,3,…),我想根据在Linux操作系统和Windows操作系统中收到的命令模拟鼠标和键盘事件。

我与bool QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)一起工作,但我不知道接收器传递给它什么,并且它与MouseMove的作用有问题。

我发现这个帮助在linux操作系统中工作得很好,但我在Windows操作系统中使用这个帮助方法有问题。有没有一种方法在两个操作系统中都有效?

可以通过以下方式设置鼠标位置:

QCursor::setPos(QPoint(10,10));

还可以通过以下方式模拟鼠标点击:

QMouseEvent * event1 = new QMouseEvent ((QEvent::MouseButtonPress), QPoint(10,10),
    Qt::LeftButton,
    Qt::LeftButton,
    Qt::NoModifier   );
qApp->postEvent((QObject*)myWidget,(QEvent *)event1);
QMouseEvent * event2 = new QMouseEvent ((QEvent::MouseButtonRelease), QPoint(10,10),
    Qt::LeftButton,
    Qt::LeftButton,
    Qt::NoModifier   );
qApp->postEvent((QObject*)myWidget,(QEvent *)event2);

向小部件发送一个键事件,如下所示:

QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
QCoreApplication::postEvent (myWidget, event);