qt5--鼠标操作

#include "mylabel.h"
#include <QDebug>
#include <QPointF>
#include <QPoint> MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{
this->setMouseTracking(true); //设置鼠标移动跟踪的模式
//true 只要鼠标移动就触发mouseMoveEvent事件
//false 只有按下鼠标并移动才触发mouseMoveEvent事件
qDebug()<<this->hasMouseTracking(); //返回鼠标的跟踪状态 this->setCursor(Qt::CrossCursor); //设置鼠标在本控件中的形状
//系统鼠标形状看下边
this->unsetCursor(); //恢复默认鼠标形状 } void MyLabel::enterEvent(QEvent *event){
qDebug()<<"鼠标进来了";
}
void MyLabel::leaveEvent(QEvent *event){
qDebug()<<"鼠标离开了";
}
void MyLabel::mousePressEvent(QMouseEvent *event){
qDebug()<<"按下了鼠标";
if (event->button()==Qt::LeftButton) { //如果按下鼠标左键
qDebug()<<"你按下了鼠标左键";
} if (event->button()==Qt::RightButton) { //如果按下鼠标右键
qDebug()<<"你按下了鼠标右键";
} if (event->button()==Qt::MidButton) { //如果按下鼠标中键
qDebug()<<"你按下了鼠标中键";
} }
void MyLabel::mouseReleaseEvent(QMouseEvent *ev){
qDebug()<<"释放了鼠标";
}
void MyLabel::mouseMoveEvent(QMouseEvent *ev){
int i,j;
i=ev->x(); //返回x坐标---相对于控件客户区
//需要#include <QMouseEvent>
j=ev->y(); //返回y坐标---相对于控件客户区
QString str=QString("x坐标为:%1 y坐标为:%2").arg(i).arg(j);
qDebug()<<str; ulong ii;
ii=ev->timestamp(); //# 返回事件发生的时间。【以程序运行开始计时,以毫秒为单位】
qDebug()<<"事件发生时间:"<<i; if (ev->buttons()==Qt::NoButton) { //如果没有按下鼠标
qDebug()<<"你没有按下鼠标并移动";
QPointF pointf;
QPoint point,point1;
point=ev->pos(); //返回鼠标坐标值--相对于控件--QPoint(17,0)
qDebug()<<"鼠标pos值:"<<point;
point1 =mapToGlobal(point);//将控件坐标转换成屏幕坐标
qDebug()<<"相对于屏幕的坐标是:"<<point1; pointf=ev->windowPos();//返回鼠标坐标值--相对于窗口--QPointF(295,58) //point=pointf.toPoint();//将QPointF转换为QPoint qDebug()<<"鼠标windowPos值:"<<pointf; pointf=ev->screenPos();//返回鼠标坐标值--相对于屏幕--QPointF(196,271)
qDebug()<<"鼠标screenPos值:"<<pointf;
point=pointf.toPoint();
point1=mapFromGlobal(point);//将屏幕坐标转换成控件坐标 qDebug()<<"屏幕坐标是:"<<point<<"窗口坐标是:"<<point1; qDebug()<<"鼠标globalX值:"<<ev->globalX();//返回鼠标x坐标值--相对于屏幕
qDebug()<<"鼠标globalY值:"<<ev->globalY();//返回鼠标y坐标值--相对于屏幕 point=ev->globalPos();//返回鼠标坐标值--相对于屏幕--QPoint(732,292)
qDebug()<<"鼠标globalPos值:"<<point; //pointf=QPointF(point); //将QPoint转换为QPointF qDebug()<<"鼠标localPos值:"<<ev->localPos();//返回鼠标坐标值--相对于控件--QPointF(197,58) // mapToParent(QPoint) - 将控件坐标转换成父控件坐标。如果没有父控件,则相当于mapToGlobal (QPoint)
//mapFromParent(QPoint) - 将父窗口坐标转换成窗口坐标。如果没有父窗口,则相当于mapFromGlobal(QPoint)
//mapTo (QWidget, QPoint) - 将窗口坐标转换成 QWidget父窗口坐标 }
if (ev->buttons()==Qt::LeftButton) { //如果按下鼠标左键
qDebug()<<"你按下了鼠标左键并移动";
}
//注意:在mousePressEvent和mouseReleaseEvent是瞬间动作,用button()
//在mouseMoveEvent是连续动作用buttons() if (ev->buttons()==Qt::RightButton) { //如果按下鼠标右键
qDebug()<<"你按下了鼠标右键并移动";
} if (ev->buttons()==Qt::MidButton) { //如果按下鼠标中键
qDebug()<<"你按下了鼠标中键并移动";
} } void MyLabel::wheelEvent(QWheelEvent *ev){
qDebug()<<"滚轮滚动了"<<ev->angleDelta();
//angleDelta():返回轮子旋转的距离,单位为度的八分之一.
//正值表示轮子向前旋转远离用户;负值表示轮子向后旋转朝向用户--QPoint(0,120)
//大多数鼠标类型以15度为步进工作,在这种情况下,delta值是120的倍数,即120*1/8=15度
//然而,一些鼠标具有更精细的分辨率轮,并发送小于120个单位(小于15度)的delta值。为了支持这种可能性,您可以从事件中累积添加delta值,直到达到120的值,然后滚动小部件,或者您可以部分滚动小部件以响应每个轮子事件
qDebug()<<ev->pixelDelta(); //返回屏幕上以像素为单位的滚动距离。此值是在支持基于高分辨率像素的delta值的平台(如macos)上提供的。该值应直接用于在屏幕上滚动内容 }
void MyLabel::mouseDoubleClickEvent(QMouseEvent *ev){
qDebug()<<"双击了鼠标";
}
实例下载地址: https://share.weiyun.com/5zt9jZp
系统鼠标形状:
Qt::ArrowCursor=0 
Qt::UpArrowCursor=1 
Qt::CrossCursor=2 
Qt::WaitCursor=3 
Qt::IBeamCursor=4 




qt5--鼠标操作的更多相关文章
- Python模拟键盘输入和鼠标操作
Python模拟键盘输入和鼠标操作 一.Python键盘输入模拟: import win32api import win32con win32api.keybd_event(17,0,0,0) #c ...
- c# 鼠标操作
1#region 3using System; 4using System.Runtime.InteropServices; 6#endregion 8namespace Windows.Forms. ...
- opencv鼠标操作及GUI矩形绘画
OpenCV的鼠标操作是通过一个中介函数配合回调函数来实现的.指定鼠标操作消息回调函数的函数为SetMouseCallback. void setMouseCallback(const string& ...
- WPF 中模拟键盘和鼠标操作
转载:http://www.cnblogs.com/sixty/archive/2009/08/09/1542210.html 更多经典文章:http://www.qqpjzb.cn/65015.ht ...
- python selenium-webdriver 元素操作之鼠标操作(四)
上节内容主要说明了元素的定位,本节内容说要说对元素的操作,元素的操作分为两部分一部分是鼠标的操作,另一种是对键盘对元素的操作,下面我们主要讲解一下鼠标对元素的操作. webdriver 模块中几种比较 ...
- python-web自动化-鼠标操作
鼠标操作由ActionChains类来完成鼠标操作 perform() 执行鼠标操作move_to_element() 鼠标悬浮:最常用的操作double_click() 双击操作context_cl ...
- Selenium基础知识(二)鼠标操作
一.鼠标操作 这个需要使用webdriver下的ActionChains类,这个类是操作鼠标操作的: from selenium.webdriver import ActionChains 鼠标操作可 ...
- selenium自动化之鼠标操作
在做自动化测试的时候,经常会遇到这种情况,某个页面元素,你必须要把鼠标移动到上面才能显示出元素.那么这种情况,我们怎么处理呢?,selenium给我们提供了一个类来处理这类事件——ActionChai ...
- 【python】鼠标操作
[python]鼠标操作 推荐地址:http://www.cnblogs.com/fnng/p/3288444.html --------------------------------------- ...
- OpenCV——图像的载入、显示、输出到文件和滑动条、鼠标操作
图像的载入.显示.输出到文件和滑动条 滑动条 示例: 鼠标操作
随机推荐
- MariaDB(第三章)select
基本查询 ``` --查询基本使用(条件,排序,聚合函数,分组,分页) --创建学生表 create table students ( id int unsigned not null auto_in ...
- 应用安全 - 工具 | 平台 - gitlist - 漏洞 - 汇总
简介 用途 Github仓库查看器 CVE-2014-4511 Date 类型 远程代码执行 影响范围 gitlist 0.4.0及之前版本
- java去除数组中的空值
public String[] deleteArrayNull(String []string) { String []array = string; // 声明一个list List<Stri ...
- JAVA -数据类型与表达式---数据类型转换
数据类型转换技术 Java中,数据转换的方式有三种:*赋值类型转换*提升类型转换*强制类型转换 1.赋值类型转换 当需要将一个类型的值赋给另一种类型的变量时,该值将被转换为新类型的值,此时就发生了赋值 ...
- "alert(1) to win" writeup
地址:http://escape.alf.nu/ level 0: 注意补全,");alert(1)// level 1: 通过添加反斜线使用来转义的反斜线变为字符,\");ale ...
- PTA(Basic Level)1024.科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- 云数据库RDS SQL Server 版
云数据库RDS SQL Server版是一种可弹性伸缩的在线数据库服务,并具备自动监控.备份.容灾恢复等方面的全套解决方案,彻底解决数据库运维的烦恼 请观看视频简介 SQL Server是发行最早的商 ...
- Centos 安装Pycharm 并移动到桌面。
版权声明:版权所有.未经同意不得转发,装载 https://blog.csdn.net/limingyue0312/article/details/81805826 1.下载pycharm软件包 网页 ...
- CSP-J 2019 T3 纪念品
\(\mathfrak{a}\).反思: 通过这道题成功发现自己的背包还是很差\(w\): 可能这是我\(gu\)了好久好久博客的报应叭 就在做这个题的时候,自己连背包\(dp\)的思想都忘了 背包可 ...
- 简单了解运用Git
Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制系统. SVN是集中式的. Git没有中央服务器,每台电脑就是一个完整的版本库 ,工作无需 ...