QT每日一练day21:鼠标事件
一.第一阶段——鼠标点击和释放事件
运行结果(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:鼠标事件相关推荐
- QT每日一练day4:ubuntu中使用QT
(本文主要是为了说明QT的跨平台特性) 一.安装QT sudo apt-get install qt5-default qtcreator cmake 二.打开QT 可以点击图标或命令行方式: 三 ...
- QT每日一练day1:第一个程序
参考博文:Qt常见类.窗口类继承关系树图 QT每日一练(1):第一个程序 最终效果(GIF动图): step1: step2: step3: step4: step5: step6: step7: s ...
- Qt给控件添加鼠标事件
处理控件上的鼠标事件,是做界面人机交互经常需要的,本文做一个使用的总结.本文在QLable控件中实验过. 一.在h文件中声明鼠标响应事件处理函数 public:explicit MainWindow( ...
- QT每日一练day23:鼠标进入与离开事件
运行结果(GIF动图): xiaowen_QT_day23.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFI ...
- QT每日一练day25:触发绘画事件
运行结果(GIF动图): widget.cpp 附代码: xiaowen_QT_day25.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT ...
- QT每日一练day22:键盘事件
一.第一阶段--键盘按键按下事件 运行结果(GIF动图): xiaowen_QT_day22.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): Q ...
- QT每日一练day24:绘画事件
一.第一阶段 设置线条粗细 二.第二阶段:设置笔的样式 如:虚线 三.第三阶段:绘制矩形 四.第四阶段:设置颜色 轮廓颜色 笔刷颜色 笔刷样式 五.第五阶段:绘制其他形状图像和文字 六.第六阶段:图像 ...
- QT每日一练day27:绘制不规则窗体
注:本文本来应该是以一个不规则的图片作为历程的,,忘记了!!!! 一.第一阶段:隐藏窗体框架 运行结果(GIF动图): widget.cpp 二.第二阶段:将窗口设置为透明 运行结果(GIF动 ...
- QT每日一练day20:事件处理机制
运行结果: day20.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The fo ...
最新文章
- 常见的web漏洞及其防范(转)
- linux x window system下载,linux的x window system
- 判断js对象是否拥有某属性
- android服务的说法错误的是,下面关于Android开发描述有误的一项是()。
- 静态路由与动态路由的优先级_静态路由基础知识
- 【图论】最短路上的统计(ssl 1500)
- 【高级数据类型】- 5.通道类型
- 古田县争取高速公路的历程
- js 对url进行编码和解码的三种方式
- HDU2516 取石子游戏(斐波那契)
- DeepMatch交友机器人:原来姹紫嫣红开遍,缘来就是你
- 记事本写小程序C语言,抖音上用记事本编写爱心小程序教程
- 苹果电脑系统重装 —— U盘操作
- 文本智能处理与RPA领军企业达观数据宣布完成5.8亿元C轮融资
- ARM 搭建开源NAS平台
- php 配置文件设置时区_PHP中设置时区方法
- 淘宝美工教程:1小时让店铺高大上-优就业-专题视频课程
- HDU - 6578 Blank dp
- 47 《清单革命》 -豆瓣评分7.0
- iOS应用突然无法从App Store获取到内购(IAP)产品列表的解决
热门文章
- Android自定义控件学习(一)-----属性
- mysql的压缩包安装_mysql 5.7.24 压缩包安装配置方法图文教程
- 基于JAVA+Servlet+JSP+MYSQL的心理咨询预约管理系统
- android对错图标,Android Studio Gradle图标错误,清单合并
- 设置行间距_word打印技巧:几个节省纸张的打印设置方法
- jdk,jre,jvm的区别以及联系
- 作品2:资源管理器EX(原味浏览图片)
- JavaScript之jQuery够用即可(事件委托、动画效果、扩展插件)
- Java算法之只出现一次的数字
- pcb成型板aoi检测_smt贴片加工打样的检测设备