我正在Mac OSX 10上试验Qt。 我想做什么: 将光标移动到特定位置并左键单击桌面项(在本例中为" Apple"桌面左上角的符号。 我已经尝试过QT测试事件:
首先去添加一个" mouseClick"到QTestEventList并模拟它:
list.addMouseClick(Qt::LeftButton, Qt::NoModifier, point);
QWidget* widget = QApplication::desktop();
list.simulate(widget);
这没有用。我也尝试过:
QPoint point(26,11);
QCursor::setPos(point);
list.addMouseClick(Qt::LeftButton, Qt::NoModifier);
QWidget* widget = QApplication::desktop();
list.simulate(widget);
这也行不通。我的最后一次尝试:
list.addMousePress(Qt::LeftButton, Qt::NoModifier);
list.addDelay(1000);
list.addMouseRelease(Qt::LeftButton, Qt::NoModifier);
QWidget* widget = QApplication::desktop();
list.simulate(widget);
- >也没有成功。
来自应用程序的DesktopWidget上使用的QTestEventList是否可能在Mac上完全没有效果?或者我做错了什么......
非常感谢帮助;-)提前致谢!
吕克
答案 0 :(得分:0)
我从未尝试过使用QTestEventList在Mac上模拟鼠标事件。相反,我使用了Mac Quartz Event Services API。
以下代码说明了如何将鼠标移动到某个位置以及如何模拟点击事件:
#include <ApplicationServices/ApplicationServices.h>
// Move the mouse to the position x, y on the screen
int x = 26;
int y = 11;
CGEventRef mouseEv = CGEventCreateMouseEvent(
NULL, kCGEventMouseMoved,
CGPointMake(x, y),
kCGMouseButtonLeft);
CGEventPost(kCGHIDEventTap, mouseEv);
CFRelease(mouseEv);
// Simulate a left mouse click down
CGEventRef mouseEv = CGEventCreateMouseEvent(
NULL, kCGEventLeftMouseDown,
getCursorPosition(),
kCGMouseButtonLeft);
CGEventPost(kCGHIDEventTap, mouseEv);
CFRelease(mouseEv);
// Simulate a left mouse click up
CGEventRef mouseEv = CGEventCreateMouseEvent(
NULL, kCGEventLeftMouseUp,
getCursorPosition(),
kCGMouseButtonLeft);
CGEventPost(kCGHIDEventTap, mouseEv);
CFRelease(mouseEv);