Qt(Ubuntu)怎么实现模拟鼠标事件和键盘事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt(Ubuntu)怎么实现模拟鼠标事件和键盘事件?相关的知识,希望对你有一定的参考价值。

我知道Windows下有Keybd_event 和mouse_event , 但是Ubuntu下如何实现呢?
如果不用到系统自带的API函数,那么Qt自带的函数中有没有能实现的?
补充:我的意思是说Qt自带的库中那些函数能实现模拟鼠标事件和键盘事件,举个实现的例子就行了

参考技术A Windows下面跟Ubuntu没什么区别!这些事件同样可用! 参考技术B 使用QMouseEvent和QKeyEvent类啊 参考技术C xdotool命令可以直接发送这些命令

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

【中文标题】如何在 Qt 中模拟适用于 Linux 和 Windows 的所有鼠标和键盘事件?【英文标题】:How can I simulate all mouse and keyboard events in Qt that works on Linux and Windows? 【发布时间】:2014-08-18 16:04:53 【问题描述】:

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

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

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

感谢您的关注。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于Qt(Ubuntu)怎么实现模拟鼠标事件和键盘事件?的主要内容,如果未能解决你的问题,请参考以下文章

Mac 鼠标/键盘事件的监听和模拟

Qt事件机制---信号通过事件实现,事件可以过滤,事件更底层,事件是基础,信号是扩展。

使用Robot类模拟鼠标键盘事件

Linux 模拟 鼠标 键盘 事件

自动化测试基础篇--Selenium鼠标键盘事件

在 Qt 中模拟鼠标功能