鼠标按钮clicki我试图在特定的坐标上创建一个自动鼠标点击事件。
此源代码将鼠标指针移动到坐标区域,但不是单击。
请帮助我解决此问题或建议任何新想法自动执行鼠标点击事件。
注意:我使用的是QT 3.0.3
void mMouseClickFunction()
{
QWidget *d = QApplication::desktop()->screen();
int w=d->width(); // returns desktop width
int h=d->height();
printf("w=%d\nh=%d\n",w,h);
int x,y;
printf("Enter the points...\n");
scanf("%d%d",&x,&y);
QApplication::desktop()->cursor().setPos(x,y);
QPoint pt(x,y);
std::cout << pt.x() << " " << pt.y() << std::endl;
QMouseEvent *e = new QMouseEvent(QEvent::MouseButtonPress, pt,Qt::LeftButton, 0);
QApplication::sendEvent(d, e);
std::cout << "in contentsMousePressEvent"<< e->x() << " " << e->y() << std::endl;
QMouseEvent *p = new QMouseEvent(QEvent::MouseButtonRelease, pt,Qt::LeftButton, 0);
QApplication::sendEvent(d, p);
std::cout << "in contentsMouseReleaseEvent"<< p->x() << " " << p->y() << std::endl;
}
答案 0 :(得分:0)
QApplication::sendEvent
向QApplication发送内部事件,而不是系统范围的事件。您可能需要特定于系统才能发送类似的事件。这是windows的函数调用:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx
但即使有这样的电话,你也只能使用某些窗口,除非你的UIAccess是真的,而你的程序是位于硬盘右侧的签名应用程序。
编辑:这是一个页面,其中包含一些在Linux中发送输入的示例:
http://www.linuxquestions.org/questions/programming-9/simulating-a-mouse-click-594576/
希望有所帮助。