一.第一阶段——鼠标点击和释放事件

运行结果(GIF动图):

MouseEvent.pro

#-------------------------------------------------
#
# Project created by QtCreator 2021-05-06T12:10:47
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = MouseEvent
TEMPLATE = appSOURCES += main.cpp\widget.cppHEADERS  += widget.h

Widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QMouseEvent>
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();void mousePressEvent(QMouseEvent* ev);void mouseReleaseEvent(QMouseEvent* ev);
};#endif // WIDGET_H

Widget.cpp

#include "widget.h"
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent)
{}void Widget::mousePressEvent(QMouseEvent* ev)
{qDebug()<<__FUNCTION__<<endl;
}
void Widget::mouseReleaseEvent(QMouseEvent* ev)
{qDebug()<<__FUNCTION__<<endl;
}
Widget::~Widget()
{}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

二.第二阶段——识别鼠标左、中、右键点击和释放事件

运行结果(GIF动图):

Widget.cpp

#include "widget.h"
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent)
{}void Widget::mousePressEvent(QMouseEvent* ev)
{switch (ev->button()){case Qt::LeftButton:qDebug()<<__FUNCTION__<<"LeftButton"<<endl;break;case Qt::RightButton:qDebug()<<__FUNCTION__<<"RightButton"<<endl;break;case Qt::MidButton:qDebug()<<__FUNCTION__<<"MidButton"<<endl;break;default:break;}
}
void Widget::mouseReleaseEvent(QMouseEvent* ev)
{switch (ev->button()){case Qt::LeftButton:qDebug()<<__FUNCTION__<<"LeftButton"<<endl;break;case Qt::RightButton:qDebug()<<__FUNCTION__<<"RightButton"<<endl;break;case Qt::MidButton:qDebug()<<__FUNCTION__<<"MidButton"<<endl;break;default:break;}
}
Widget::~Widget()
{}

三.第三阶段——鼠标键按下后移动事件

运行结果(GIF动图):

Widget.h

Widget.cpp

四.第四阶段——鼠标移动事件(无需按下按键)

运行结果(GIF动图):

Widget.cpp

五.第五阶段——鼠标滚轮事件

运行结果(GIF动图):

widget.h

widget.cpp

附第五阶段代码:

MouseEvent.pro

#-------------------------------------------------
#
# Project created by QtCreator 2021-05-06T12:10:47
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = MouseEvent
TEMPLATE = appSOURCES += main.cpp\widget.cppHEADERS  += widget.h

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QMouseEvent>
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();void mousePressEvent(QMouseEvent* ev);void mouseReleaseEvent(QMouseEvent* ev);void mouseMoveEvent(QMouseEvent* ev);void wheelEvent(QWheelEvent *ev);
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent)
{this->setMouseTracking(false);
}
void Widget::mousePressEvent(QMouseEvent* ev)
{switch (ev->button()){case Qt::LeftButton:qDebug()<<__FUNCTION__<<ev->pos()<<"LeftButton"<<endl;break;case Qt::RightButton:qDebug()<<__FUNCTION__<<"RightButton"<<endl;break;case Qt::MidButton:qDebug()<<__FUNCTION__<<"MidButton"<<endl;break;default:break;}
}
void Widget::mouseMoveEvent(QMouseEvent* ev)
{qDebug()<<__FUNCTION__<<ev->pos()<<endl;
}
void Widget::mouseReleaseEvent(QMouseEvent* ev)
{switch (ev->button()){case Qt::LeftButton:qDebug()<<__FUNCTION__<<ev->pos()<<"LeftButton"<<endl;break;case Qt::RightButton:qDebug()<<__FUNCTION__<<"RightButton"<<endl;break;case Qt::MidButton:qDebug()<<__FUNCTION__<<"MidButton"<<endl;break;default:break;}
}
void Widget::wheelEvent(QWheelEvent *ev)
{qDebug()<<__FUNCTION__<<ev->angleDelta()<<endl;
}
Widget::~Widget()
{}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

六.附:概念



QT每日一练day21:鼠标事件相关推荐

  1. QT每日一练day4:ubuntu中使用QT

    (本文主要是为了说明QT的跨平台特性)   一.安装QT sudo apt-get install qt5-default qtcreator cmake 二.打开QT 可以点击图标或命令行方式: 三 ...

  2. QT每日一练day1:第一个程序

    参考博文:Qt常见类.窗口类继承关系树图 QT每日一练(1):第一个程序 最终效果(GIF动图): step1: step2: step3: step4: step5: step6: step7: s ...

  3. Qt给控件添加鼠标事件

    处理控件上的鼠标事件,是做界面人机交互经常需要的,本文做一个使用的总结.本文在QLable控件中实验过. 一.在h文件中声明鼠标响应事件处理函数 public:explicit MainWindow( ...

  4. QT每日一练day23:鼠标进入与离开事件

    运行结果(GIF动图): xiaowen_QT_day23.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFI ...

  5. QT每日一练day25:触发绘画事件

    运行结果(GIF动图): widget.cpp 附代码: xiaowen_QT_day25.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT ...

  6. QT每日一练day22:键盘事件

    一.第一阶段--键盘按键按下事件 运行结果(GIF动图): xiaowen_QT_day22.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): Q ...

  7. QT每日一练day24:绘画事件

    一.第一阶段 设置线条粗细 二.第二阶段:设置笔的样式 如:虚线 三.第三阶段:绘制矩形 四.第四阶段:设置颜色 轮廓颜色 笔刷颜色 笔刷样式 五.第五阶段:绘制其他形状图像和文字 六.第六阶段:图像 ...

  8. QT每日一练day27:绘制不规则窗体

    注:本文本来应该是以一个不规则的图片作为历程的,,忘记了!!!!     一.第一阶段:隐藏窗体框架 运行结果(GIF动图): widget.cpp 二.第二阶段:将窗口设置为透明 运行结果(GIF动 ...

  9. QT每日一练day20:事件处理机制

    运行结果: day20.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The fo ...

最新文章

  1. 常见的web漏洞及其防范(转)
  2. linux x window system下载,linux的x window system
  3. 判断js对象是否拥有某属性
  4. android服务的说法错误的是,下面关于Android开发描述有误的一项是()。
  5. 静态路由与动态路由的优先级_静态路由基础知识
  6. 【图论】最短路上的统计(ssl 1500)
  7. 【高级数据类型】- 5.通道类型
  8. 古田县争取高速公路的历程
  9. js 对url进行编码和解码的三种方式
  10. HDU2516 取石子游戏(斐波那契)
  11. DeepMatch交友机器人:原来姹紫嫣红开遍,缘来就是你
  12. 记事本写小程序C语言,抖音上用记事本编写爱心小程序教程
  13. 苹果电脑系统重装 —— U盘操作
  14. 文本智能处理与RPA领军企业达观数据宣布完成5.8亿元C轮融资
  15. ARM 搭建开源NAS平台
  16. php 配置文件设置时区_PHP中设置时区方法
  17. 淘宝美工教程:1小时让店铺高大上-优就业-专题视频课程
  18. HDU - 6578 Blank dp
  19. 47 《清单革命》 -豆瓣评分7.0
  20. iOS应用突然无法从App Store获取到内购(IAP)产品列表的解决

热门文章

  1. Android自定义控件学习(一)-----属性
  2. mysql的压缩包安装_mysql 5.7.24 压缩包安装配置方法图文教程
  3. 基于JAVA+Servlet+JSP+MYSQL的心理咨询预约管理系统
  4. android对错图标,Android Studio Gradle图标错误,清单合并
  5. 设置行间距_word打印技巧:几个节省纸张的打印设置方法
  6. jdk,jre,jvm的区别以及联系
  7. 作品2:资源管理器EX(原味浏览图片)
  8. JavaScript之jQuery够用即可(事件委托、动画效果、扩展插件)
  9. Java算法之只出现一次的数字
  10. pcb成型板aoi检测_smt贴片加工打样的检测设备