Qt本身自己的鼠标获取函数,只能获取在Qt窗口内部的坐标值,而且这个坐标值是相对于Qt控件的。想要获取显示屏的绝对坐标值怎么办呢?使用Windows系统的API接口。网络上有许多这样的文章,但都是些高手写的。自己还得揣摩半天。这里我给出傻瓜式的教程,方便那些只会用Qt,看到Windows API字样就懵圈的初学者。
先创建调用Windows API的C++类。
在你的Qt项目上点击右键,add New,选择C++ class。这里假设类名是MouseAct。mouseact.h中代码如下:

#include <QWidget>
#include "windows.h"//这是引入Windows操作系统的APIclass MouseActs : public QWidget
{    Q_OBJECTpublic:    MouseActs(QWidget *parent = nullptr);POINT pos = {0,0} ;    //保存鼠标点击点的x、y坐标。这里的坐标值是整个显示屏幕窗口的坐标    //与Qt程序窗口无关。与你操作系统的分辨率有关。 public slots:    void getClickedPos() ;//获取鼠标点击处的全局坐标值(屏幕坐标)    void doPressAct(int,int,int);//执行鼠标动作。
};

mouseact.cpp中代码如下:

#include "mouseacts.h"
MouseActs::MouseActs(QWidget *parent): QWidget (parent)
{}//获取鼠标点击处的全局坐标值(屏幕坐标)
void MouseActs::getClickedPos ()
{
GetCursorPos(&pos);
} //执行鼠标动作。
void MouseActs::doPressAct(int x,int y,int type_id)
{      SetCursorPos(x,y);if(type_id==1){//鼠标单击一下左键  mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,x, y, 0, 0);mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,x, y, 0, 0);   }    else if(type_id==2){//鼠标双击左键       mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,x, y, 0, 0);mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,x, y, 0, 0);mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,x, y, 0, 0);mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,x, y, 0, 0);}
}

说明:

getClickedPos ()函数的作用是调用windows的接口函数GetCursorPos(&pos)来获得鼠标光标的坐标值. 注意这里获得的pos值是整个屏幕,作为窗口的屏坐标值。Pos是头文件中声明的变量,这里在调用的时候使用的是&pos的样式,所以他会把获得的坐标值保存在pos中。我建立这个函数是为了让qt的其他窗口进行调用。

doPressAct(int x,int y,int type_id)这个函数是用来实现鼠标左键单击或者双击的操作的,X和y是要传递给鼠标函数的坐标值。传递Id这个变量是为了要区分是执行单击还是双击操作。mouse_event() 这个函数是windows API的函数。他使用这个MOUSEEVENTF_LEFTDOWN,表示左键按下,MOUSEEVENTF_LEFTUP表示左键松开。鼠标右键的话,把left变成right就行了。

SetCursorPos(x,y); 这个函数是要把这个鼠标的光标先移动到坐标xy的地方,这个函数是windows的API接口函数不是qt的。来自windows.h。要实现鼠标单击或者双击,必须先把鼠标的光标移动到坐标xy的地方,然后才可以执行鼠标的单击或者双击操作,这一点一定要注意。

关于怎么使用上面这个类的问题:
使用的流程是:
1、Qt项目的其它窗口控件重定义mousePressEvent(QMouseEvent *event) 函数,。mousePressEvent(QMouseEvent *event) 函数是不需要你显式调用的,你点击鼠标的时候,它会自动调用。它的代码如下,

void Dialog::mousePressEvent(QMouseEvent *event)
{//未取定坐标值时,取坐标值。否则不做什么。if(notfixed){if(event->button ()==Qt::LeftButton){mouseAct->getClickedPos () ;x_LE -> setText (QString::number (mouseAct->pos.x)) ;y_LE -> setText (QString::number (mouseAct->pos.y)) ;}}
}

我这里声明了一个bool型变量notfixed。意思是说,没有取定坐标值的时候,才调用WindowsAPI取屏幕坐标。如果已经取定坐标值了,就不要调用了。免得鼠标执行单双击操作的时候,坐标变化了,不是你定的位置。
外部控件获得屏幕的指定位置的坐标后,再在一定的触发条件下调用mouseact的void MouseActs::doPressAct(int x,int y,int type_id)就可以完成鼠标单击双击操作了。

下面给大家分享一个我做的小程序。
//download.csdn.net/download/skyskyhaha/12235088
使用方法如下:
1、程序主窗口上有个数值框,是用来调节主窗口透明度的。把程序窗口的透明度调低一些,让主窗口透明一些。以便能够透过控件窗口看到后面的其它窗口。
2、用主窗口覆盖你想要点击的其它任何程序或网页的按钮部位,鼠标点击主窗口相应位置,会获取相应的坐标值。然后点击“固定坐标”按钮。此时,测试按钮、开始按钮都可以使用了。
3、你点击测试按钮,5秒后,会自动点击你刚才指定的位置。注意,要先把你的Qt程序窗口挪开,不要遮挡点击位置。
4、设置点击间隔,点击开始后,会每隔XX分钟后自动点击相应位置。

使用Qt控制鼠标自动点击屏幕上某一点相关推荐

  1. 【Nodejs】使用robotjs控制鼠标键盘 自动点击屏幕上指定位置的图标 实现连接wifi等操作

    每天上班开机挺麻烦,要手动连wifi:因此可以写一个很简单的自动执行脚本,执行 node xxxxxx.js 安装 robotjs npm i robotjs -g xxxxxx.js 以下数字自行根 ...

  2. python手机屏幕自动点击代码_鼠标隔段时间自动点击屏幕

    知识点:Python库及简单定时器的使用 1. 鼠标自动点击屏幕代码 (1). 首先 pip install pymouse (2).  运行代码出现:ModuleNotFoundError: No ...

  3. python 鼠标 自动点击_鼠标隔段时间自动点击屏幕

    知识点:Python库及简单定时器的使用 1. 鼠标自动点击屏幕代码 (1). 首先 pip install pymouse (2). 运行代码出现:ModuleNotFoundError: No m ...

  4. python控制软件点击_Python小程序 控制鼠标循环点击代码实例

    Python小程序 控制鼠标循环点击代码实例 这篇文章主要介绍了Python小程序 控制鼠标循环点击代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...

  5. Delphi下实现鼠标自动点击器

    本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-20849-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 众所周知,当鼠标指 ...

  6. python编写自动化脚本工具_blog/技巧与工具04-python控制鼠标自动化点击脚本.md at master · tigeroses/blog · GitHub...

    title date tags category 技巧与工具04-python控制鼠标自动化点击脚本 2017-06-24 10:04:28 -0700 python pyautogui tools ...

  7. 安卓软件改名器_自动点击屏幕的软件有哪些?-手机自动点击软件下载

    闪电自动点击 系统工具 | 4.21 MB | 平台:安卓 更新时间:2020-11-09 下载 闪电自动点击app是一款能够帮助你自动操作重复性机械化的操作的软件,比如在游戏中你需要一直点击屏幕进行 ...

  8. Android 实现自动点击屏幕的方法

    //新建一个实体类 import android.app.Activity;import java.io.IOException;/*** Created by cxf on 2020/9/29* 自 ...

  9. 实用分享-鼠标自动点击助手

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处    鼠标自动点击助手 工具下载路径: 鼠标轨迹助手-可自定义点击轨迹-其它文档类资源-CSDN ...

  10. python自动点击脚本_用Python实现鼠标自动点击

    前言: 最近玩某页游时遇到一个重复任务,需要不停的接/交任务道具,数量巨大又十分麻烦,想去网上下脚本又找不到合适的,于是整了一个可以实现鼠标自动点击的小玩意.因为我之前没有任何编程基础,这两天自学又走 ...

最新文章

  1. python中读取文件过程中seek()函数的使用
  2. PHP脚本执行超时的解决办法
  3. SAP HANA ANY和ALL关键字
  4. Linux学习:vim 的 3 种命令模式及基本操作
  5. python基础语法(一)
  6. 进行有效客户细分的八个步骤
  7. 拓扑图是用什么软件画的?
  8. 一款黑科技神器:uTools
  9. 股票大作手操盘术---择时
  10. W33 - 999、Web站点安全监控
  11. matlab 集群搭建,MATLAB 科学计算工作站及集群配置方案
  12. 开始编写寄几的 CSS 基础库
  13. python编写程序解方程_第2章 Python初步 课后题
  14. supervisorctl error (no such process)
  15. 视频教程-游戏网络编程必备知识-Unity3D
  16. 可调速气体采样泵和液体采样泵选型介绍
  17. 古剑奇谭二服务器维护,《古剑奇谭网络版》2月28日更新维护公告
  18. 深度学习——致命问题之Gradient Vanish
  19. 编程小白学python路线图_零基础Python学习路线图,让你少走弯路
  20. Latex中输入大小写罗马数字

热门文章

  1. android文件恢复功能,安卓手机误删文件恢复?快速恢复办法
  2. 刘未鹏:怎样花两年时间去面试一个人
  3. FPGA蜂鸣器演奏音乐
  4. 最新王通《搜索排名引爆点》课值得学习吗
  5. Ubuntu20.04代理设置
  6. 使用腾讯云上传图片,并给图片加水印
  7. 熊出没之奇幻空间里面的机器人图片_《熊出没之奇幻空间》小铁COCO智能机器人玩具...
  8. 企业盈利能力分析-毛利率、销售净利率、投资回报率、权益回报率、资产回报率...
  9. 那些精贵的文献资源下载网址经验总结
  10. 使用MySql Workbench创建存储过程,在表中插入100条数据