[英]Qt5 C++ automated mouse clicking
我正在尝试创建一个应用程序,鼠标移动到屏幕上的某些位置,并自动单击左键。 问题是我无法在Qt应用程序之外单击,所以我通过使应用程序对鼠标单击透明并使用以下代码全屏显示来解决方法:
int x = 800;
int y = 500;
this->setWindowFlags(Qt::WindowStaysOnTopHint|Qt::FramelessWindowHint|Qt::ToolTip);
this->setAttribute(Qt::WA_TranslucentBackground);
this->setAttribute( Qt::WA_TransparentForMouseEvents);
QCursor::setPos(x,y);
qDebug()<<QCursor::pos();
QWidget *d = QApplication::desktop()->screen();
QMouseEvent MouseEvent(QEvent::MouseButtonPress, QCursor::pos(),Qt::LeftButton,Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(d, &MouseEvent);
QApplication::sendEvent(d, &MouseEvent);
鼠标光标移动到所需位置,但点击不起作用。 我也尝试更换Qt类来处理鼠标事件并使用Windows API,因为我不需要跨平台应用程序,但我在同一点上陷入困境。
我知道这有点晚了,但有办法做你想做的事。 通常,创建或模拟用户界面事件仅用于自动测试。
如果你想要一些计算或算法的结果,除了自动化UI之外,几乎总能更好地从一个软件获得所需的结果。 您可以看到它是否具有文档化的API,您可以调用它调用的相同Web服务,您可以链接它所执行的相同库,也可以复制它使用的算法。
如果这些都不可接受,那么您应该查看有关自动化测试的QT5教程 。
特别是QTest命名空间 。 单击鼠标的函数有两个重载,称为QTEST :: mouseClick 。
我想这可能会做你想要的:
#include <QTest>
// class and function declarations removed here
QTest::mouseClick(d, Qt::LeftButton, Qt::NoModifier, QPoint(x,y));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.