如何在Qt中模拟适用于Linux和Windows的所有鼠标和键盘事件?

时间:2014-08-18 16:04:53

标签: c++ linux windows qt

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

我曾与bool QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)合作,但我不知道接收方传递给它的是什么,我对MouseMove行动有问题。

我发现这个help在Linux操作系统中运行良好,但我在Windows操作系统中遇到了这种帮助方法的问题。 是否有任何方法适用于两种操作系统?

感谢您的关注。

1 个答案:

答案 0 :(得分:2)

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

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);