【QT学习】7.事件,把文本显示在页面中(文本可变),鼠标指针切换,鼠标左键右键按下,qt设置背景样式

0.创建项目,事件的创建

1.事件的位置

2.这就是多态,子类重写父类函数,子类调用子类函数,也可以调用父类函数。但同函数名

1.要求:文本显示在页面中(文本可变)

1.文本显示在页面的核心代码

        主要步骤是:(1)加入QString中

        QString str=QString("移动:%1,%2").arg(event->x()).arg(event->y());

(2)setText进入label中

void MyLabel::mouseMoveEvent(QMouseEvent *event){qDebug() <<"移动:" << event->x() << "," << event->y() << endl;//实现:坐标显示在页面中间QString str=QString("移动:%1,%2").arg(event->x()).arg(event->y());this->setText(str);
}

补充:修改字体大小,居中

QString str=QString("<center><h1>移动:%1,%2</h2></center>").arg(event->x()).arg(event->y());
this->setText(str);

2.要求:页面左侧与右侧鼠标指针变换

1.创建图标

2.添加qt资源(鼠标指针图片)

3.添加鼠标指针图片

4.代码:

MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{//是能Mouse的事件,MyLabel::mouseMoveEvent可被事件接受this->setMouseTracking(true);//(1)从资源中右键--》复制文件路径//:/new/prefix1/C:/Users/Administrator/Desktop/5.jpg//:/new/prefix1/C:/Users/Administrator/Desktop/6.jpgpBitmap1 = new QPixmap(":/new/prefix1/C:/Users/Administrator/Desktop/5.jpg");pBitmap2 = new QPixmap(":/new/prefix1/C:/Users/Administrator/Desktop/6.jpg");//调整指针的大小*pBitmap1 =  pBitmap1->scaled(40,40,Qt::KeepAspectRatio);*pBitmap2 =  pBitmap2->scaled(40,40,Qt::KeepAspectRatio);
}
//函数自动创建一个QMouseEvent *event事件,去被事件列表接受
void MyLabel::mouseMoveEvent(QMouseEvent *event){qDebug() <<"移动:" << event->x() << "," << event->y() << endl;//实现:坐标显示在页面中间QString str=QString("<center><h1>移动:%1,%2</h2></center>").arg(event->x()).arg(event->y());this->setText(str);if(event->x()<=this->width()/2){setCursor(QCursor(*pBitmap1));}else{setCursor(QCursor(*pBitmap2));}
}

结果:

        由于截图时后鼠标会变,没有截上

3.鼠标左键、右键按下

void MyLabel::mousePressEvent(QMouseEvent *ev){if(ev->button() == Qt::LeftButton)qDebug() <<"左键按下"  << endl;else if(ev->button() == Qt::RightButton)qDebug() <<"右键按下"  << endl;
}

4.qt背景的设置

1.代码(;为转行),具体可以百度搜索语法

//设置qt样式表(背景)
//:/new/prefix1/C:/Users/Administrator/Desktop/1.jpg
this->setStyleSheet("QLabel{color:rgb(0,255,255);""background-color:white;""background-image:url(:/new/prefix1/C:/Users/Administrator/Desktop/1.jpg)}");

2.label背景

注意:以上我们是在自己定义的label控件中处理事件,里面不能处理按钮。

        处理:按钮处理事件应该在主页面上实现。

5.按钮的处理

1.主页面写

2.代码

//按键按下
void Widget::keyPressEvent(QKeyEvent *event){//qDebug() << event->key() << endl;qDebug() << event->text() << endl;switch(event->key()){case Qt::Key_Shift:isUpper = true;qDebug() << "Shift" << endl;break;case Qt::Key_A:if(isUpper)qDebug() << "A" << endl;elseqDebug() << "a" << endl;break;}
}
//按键松开
void Widget::keyReleaseEvent(QKeyEvent *event){switch(event->key()){case Qt::Key_Shift:isUpper = false;break;}
}

3.输出a

6.定时器的处理

1.创建

2.定时器事件处理

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);progressBarValue = 100;ui->progressBar->setValue(progressBarValue);}
//定时器事件处理
void Widget::timerEvent(QTimerEvent *event){if(progressBarValue>0)progressBarValue--;ui->progressBar->setValue(progressBarValue);
}

3.按钮处理

    case Qt::Key_B:qDebug() << "启动定时器" << endl;timerId = startTimer(1000);break;case Qt::Key_P:qDebug() << "关闭定时器" << endl;killTimer(timerId);break;

结果:

        按B定时器开始每秒减去1,按P停止定时器

总结:

        事件进入队列,后事件处理器处理,事件处理器使用自写的事件函数处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DRF requets源码分析

【四】requets源码分析 【1】查看request传递的数据 &#xff08;1&#xff09;视图层 编写传输数据的接口查看request方法的参数 class BookAPIView(APIView):def get(self, request, *args, **kwargs):return Response({body: request.body, data: request.data, post: r…

【Web】DASCTF X GFCTF 2022十月挑战赛题解

目录 EasyPOP hade_waibo EasyLove BlogSystem EasyPOP 先读hint.php sorry.__destruct -> secret_code::secret() exp: $anew sorry(); $bnew secret_code(); $a->password"suibian"; $a->name"jay"; echo serialize($a); 真暗号啊&…

web项目中jsp页面不识别el表达式

如果使用el表达式出现下图问题 ** 解决办法 ** 这是因为maven创建项目时&#xff0c;web.xml头部声明默认是2.3&#xff0c;这个默认jsp关闭el表达式 修改web.xml文件开头的web-app的版本 <?xml version"1.0" encoding"UTF-8"?> <web-app x…

Python爬取猫眼电影票房 + 数据可视化

目录 主角查看与分析 爬取可视化分析猫眼电影上座率前10分析猫眼电影票房场均人次前10分析猫眼电影票票房占比分析 主角查看与分析 爬取 对猫眼电影票房进行爬取&#xff0c;首先我们打开猫眼 接着我们想要进行数据抓包&#xff0c;就要看网站的具体内容&#xff0c;通过按F12…

Postman之安装

Postman工具之介绍与安装 Postman是什么&#xff1f;Postman有几种安装方式&#xff1f; Postman是什么&#xff1f; postman是一款http客户端的模拟器&#xff0c;它可以模拟发出各种各样的网络请求&#xff0c;用于接口测试。 Postman有几种安装方式&#xff1f; 两种&…

4.17 网络编程

思维导图 select实现TCP并发服务器 #include <myhead.h> #define SER_IP "192.168.125.26" #define SER_PORT 8888int main(int argc, const char *argv[]) {int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd -1){perror("socket error");return -1…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt 小区物业管理系统 的设计与实现

一.项目介绍 系统分为管理员 和 业主 两块&#xff1a; 管理员点击进入到系统操作界面&#xff0c;可以对首页、业主信息管理、管理员信息管理、 楼栋和房屋信息管理、物业费管理、地下停车位管理、公告信息管理、报修信息管理、 投诉管理以及个人信息等功能模块 …

libftdi1学习笔记 5 - SPI Nor Flash

目录 1. 初始化 2. CS控制例子 3. 读ID 3.1 制造商 3.2 容量大小 3.3 设置IO类型 3.3.1 setQSPIWinbond 3.3.2 setQSPIMxic 3.3.3 setQSPIMicrochip 3.3.4 setQSPIMicron 4. 写保护 5. 等待空闲 6. 擦除扇区 7. 页编程 8. 页读 9. 写 10. 读 11. 验证 基于M…

cesium加载高层级离线影像地图瓦片(天地图、19级Arcgis)

实际加载效果如图&#xff1a; 1、下载离线地图瓦片方式&#xff08;多种任选其一&#xff0c;个人倾向于Qgis工具&#xff09;&#xff1a; 方式1、采用第三方下载工具如&#xff1a;91卫图、水经注、全能电子地图下载器、bigemap等等。&#xff08;这些有的下载层级不够&…

Spring Boot:Web应用开发之登录与退出的实现

Spring Boot 前言实现登录功能配置拦截器 实现退出功能 前言 登录与退出功能作为 Web 应用中的基础且重要的组成部分&#xff0c;直接关系到用户的安全和隐私保护。通过实现登录与退出功能&#xff0c;可以对用户的身份进行验证和授权&#xff0c;确保只有合法的用户才能访问特…

Qwen1.5大语言模型微调实践

在人工智能领域&#xff0c;大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;的兴起和广泛应用&#xff0c;为自然语言处理&#xff08;NLP&#xff09;带来了前所未有的变革。Qwen1.5大语言模型作为其中的佼佼者&#xff0c;不仅拥有强大的语言生成和理…

vue3【详解】选项式 API 实现逻辑复用

抽离逻辑代码到一个函数函数命名约定为 useXxxx格式 ( React Hooks 也是 )在 setup 中引用 useXxx 函数 演示代码&#xff1a;实时获取鼠标的坐标 逻辑封装 useMousePosition.js // 导入 ref, onMounted, onUnmounted import { ref, onMounted, onUnmounted } from "vue…

锐捷云桌面的安装

按下 <DEL> 键进入 BIOS setup 界面&#xff08;初始密码为 admin &#xff09;。 输入密码之后就进入 BIOS 的 Main 界面 设置服务器 BMC IP 地址。 a 云服务器启动后&#xff0c;在 BIOS 的主页面&#xff0c;把光标移到 [Server Mgmt] 项。 b 选择 [BMC Network C…

游戏前摇后摇Q闪E闪QE闪QA等操作

备注&#xff1a;未经博主允许禁止转载 个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_w…

基于Springboot的社区防疫物资申报系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的社区防疫物资申报系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

Quartz + SpringBoot 实现分布式定时任务

文章目录 前言一、分布式定时任务解决方案二、Quartz是什么&#xff1f;1.quartz简介2.quartz的优缺点 二、Quartz分布式部署总结 前言 因为应用升级&#xff0c;由之前的单节点微服务应用升级为集群微服务应用&#xff0c;所以之前的定时任务Spring Scheduled不再适用了&…

SV-704LW 无线WIFI网络音柱

SV-704LW 无线WIFI网络音柱(工业级) 一、描述 SV-704LW是深圳锐科达电子有限公司的一款壁挂式WIFI无线网络音柱&#xff0c;通过WIFI无线接入到WIFI覆盖的网络中&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;其采用防水设计&#xff0c;功率可以从30W到6…

如何利用FLUENT计算流体力学方法解决大气与环境领域流动问题

ANSYS FLUENT是目前全球领先的商用CFD 软件&#xff0c;市场占有率达70%左右&#xff0c;是工程师和研究者不可多得的有力工具。由于采用了多种求解方法和多重网格加速收敛技术&#xff0c;因而FLUENT能达到最佳的收敛速度和求解精度。灵活的非结构化网格和基于解的自适应网格技…

从OWASP API Security TOP 10谈API安全

1.前言 应用程序编程接口&#xff08;API&#xff09;是当今应用驱动世界创新的一个基本元素。从银行、零售、运输到物联网、 自动驾驶汽车、智慧城市&#xff0c;API 是现代移动、SaaS 和 web 应用程序的重要组成部分&#xff0c;可以在面向客 户、面向合作伙伴和内部的应用程…

计算机组成原理 — 控制单元的功能

控制单元的功能 控制单元的功能微操作命令分析取指周期间址周期执行周期中断周期 控制单元的功能控制单元的外特性输入信号输出信号 控制信号举例不采用CPU内部总线的方式取指周期间址周期执行周期 采用CPU内部总线的方式取指周期间址周期执行周期 多级时序系统机器周期时钟周期…