模拟鼠标按钮按QT 5.3仅第一次工作
Simulating a mouse button press on Qt 5.3 only works the first time
我已经写了我在qt5/qml应用程序上写的,我希望能够从Web浏览器远程控制。我将屏幕截图发送到浏览器并接收X,y作为回报。我已经写了一个C 类来做到这一点。
当我启动应用程序时,图像出现了,浏览器的首次点击起作用。第二个行不通。如果我单击应用程序中的任何位置,我会看到按钮按在屏幕上发生,然后远程按下将再工作一次。我怀疑问题是焦点发生了变化,直到我单击实际应用程序之前,焦点才能正确重置。
我正在使用qguiapplicatiop,到目前为止,尚无法从itemat或widgetat中获得任何有用的东西,因此我可以将事件发送到适当的对象。
这是一个代码段来显示我在做什么。
void Wremote::mClick(int x, int y ) {
QPointF *pos = new QPointF((qreal)x,(qreal)y);
QWindowList wl = QGuiApplication::allWindows();
_mwindow = wl[0];
QMouseEvent pevent(QEvent::MouseButtonPress,
*pos, Qt::LeftButton
,Qt::LeftButton, 0);
QMouseEvent revent(QEvent::MouseButtonRelease,
*pos, Qt::LeftButton
,Qt::LeftButton, 0);
QApplication::instance() ->sendEvent(_mwindow, &pevent);
QApplication::processEvents();
QApplication::instance() ->sendEvent(_mwindow, &revent);
QApplication::processEvents();
}
这是我第一次尝试与C 集成QT。该应用程序的大部分使用Pyotherside。
任何指向我出错的地方都将不胜感激。
谢谢,
Steve
如果不是优雅的解决方案,这是一个工作解决方案。
void Wremote::mClick(int x, int y ) {
QTest::mouseClick(_mwindow,Qt::LeftButton,0,QPoint(x,y),-1);
}
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 我必须构建我的项目 2 次,第一次失败,因为它无法打开库
- 是什么导致我的循环在第一次迭代中运行得更慢
- QLibrary 函数在第一次调用时工作缓慢
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 为什么第一次迭代后的指针指向随机值?
- 如何防止GUI挂起,同时允许第二次操作与Qt中的第一次操作一起执行
- LAPACK函数在第一次迭代后变慢
- 为什么 Boost unordered_map 在第一次插入时需要太多时间?
- EGL 在第一次 opengl 函数调用时崩溃
- 提升 Asio SSL 无法第二次接收数据(第一次确定)
- 数组仅在第一次返回错误值
- C++程序在第一次尝试时会给出垃圾,但如果它捕获异常并重试,则会给出适当的值
- 模拟鼠标按钮按QT 5.3仅第一次工作
- gets() 在第一次循环迭代中不起作用,但在后续迭代中工作
- 输入验证循环在第一次输入失败后无法正常工作
- 为什么第一次工作后对 LoadLibrary 的调用会失败并显示"找不到指定的模块"
- 第一次运行后,反向编号功能无法正常工作
- getfile()在第一次尝试时失败,但在第二次尝试时仍在工作,我该如何修复此问题
- 为什么第二次初始化工作,而第一次初始化由于"element type does not match"而失败?