当前位置: 首页 > news >正文

c++ qt--事件(第六部分)

c++ qt–事件(第六部分)

一.编辑伙伴,编辑顺序(按TAB进行切换)

1.编辑伙伴

此功能在设计界面如下的位置

在这里插入图片描述

1.设置伙伴关系

在这里插入图片描述

鼠标左键长按一个Label组件然后把鼠标移到另一个组件上

2.伙伴关系的作用

伙伴关系的作用就是可以设置快捷键,通过快捷键直接定位到某个组件

3.添加快捷键

在这里插入图片描述

4.使用快捷键

ALT+设置快捷键的字符

qt中上面的菜单栏也可以用alt+相应的字符进行使用

在这里插入图片描述

2.编辑顺序

此功能在设计界面如下的位置

在这里插入图片描述

1.设置编辑顺序

直接用鼠标左键点排序的方块即可,先点的顺序就靠前

在这里插入图片描述

在这里插入图片描述

3.进行切换

按TAB键即可进行编辑对象的切换(按顺序切换)

二.事件

1.什么是事件

事件是由系统或Qt本身在不同的时刻发出的。

事件是信号的前驱(事件驱动信号)

如果使用组件,关心的是信号槽;如果使用自定义组件,关心的是事件

2.关于事件的第一个例子 监控鼠标状态(用事件来进行监控)

1.用到的组件如下

在这里插入图片描述

2.重写事件(虚函数重写)

1.创建一个文件,用来重写事件(虚函数重写)

在这里插入图片描述

在这里插入图片描述

2.修改类

在创建的文件的头文件进行的修改

在这里插入图片描述

在创建的文件的源文件进行的修改

在这里插入图片描述

3.重写事件(虚函数重写)

在创建的文件的头文件的类中写下面代码

//声明
public:void mousePressEvent(QMouseEvent *ev) override;//override是判断是否重写了父类的虚函数,注意qt中的虚函数的函数名是斜体的void mouseMoveEvent(QMouseEvent *ev) override;void mouseReleaseEvent(QMouseEvent *ev) override;

在创建的文件的源文件中写下面代码

mylabel1::mylabel1(QWidget *parent) : QLabel(parent)//构造函数
{this->setMouseTracking(true);//鼠标默认不追踪,这里设置鼠标默认追踪}//button 触发当前时间的按钮
//button 当前时间发生时,哪些按键时按下的
//定义
void mylabel1::mousePressEvent(QMouseEvent *ev){if(ev->button()==Qt::LeftButton){//如果是鼠标左键按下QString s=QString("鼠标左键按下:%1,%2").arg(ev->x()/*获取横坐标*/).arg(ev->y()/*获取纵坐标*/);this->setText(s);}
}void mylabel1::mouseMoveEvent(QMouseEvent *ev){QString s;if(ev->buttons()==(Qt::LeftButton|Qt::RightButton)){//鼠标左键和按键都按下了s=QString("鼠标左右键:%1,%2").arg(ev->x()).arg(ev->y());//获取坐标}else if(ev->buttons()==(Qt::NoButton)){//鼠标左键和右键都按下了s=QString("没有按键:%1,%2").arg(ev->x()).arg(ev->y());//获取坐标}this->setText(s);
}void mylabel1::mouseReleaseEvent(QMouseEvent *ev){if(ev->button()==Qt::RightButton){//鼠标右键 释放QString s=QString("鼠标右键释放:%1,%2").arg(ev->x()).arg(ev->y());//获取坐标this->setText(s);}
}
4.将子类与组件进行绑定

在这里插入图片描述

在这里插入图片描述

3.关于事件的第二个例子 输入电话号码 只能输入数字且只能是11位(用事件来进行监控)

1.用到的组件如下

在这里插入图片描述

2.重写事件(虚函数重写)

1.创建一个文件,用来重写事件(虚函数重写)

在这里插入图片描述

在这里插入图片描述

2.修改类

在创建的文件的头文件进行的修改

在这里插入图片描述

在创建的文件的源文件进行的修改

在这里插入图片描述

3.重写事件(虚函数重写)

在创建的文件的头文件的类中写下面代码

//声明
public://事件 分发bool event(QEvent *) override;//事件处理器 event handlervoid keyPressEvent(QKeyEvent *) override;

在创建的文件的源文件中写下面代码

//定义
bool myLineEdit::event(QEvent * ev)
{if(ev->type()/*判断事件的类型*/==QEvent::KeyPress){ //如果当前事件类型为键盘按下事件QKeyEvent* pKey=(QKeyEvent*)ev;//强转为某个具体的事件int key=pKey->key();//获取按下的那个按键if((Qt::Key_0<=key&&key<=Qt::Key_9)||key==Qt::Key_Backspace){//如果是数字,则放行qDebug()<<"event 放行 "<<key;return QLineEdit::event(ev);//继续走分发}else{//拦截qDebug()<<"event 拦截 "<<key;if(key==Qt::Key_Return){//Key_Return:字母区的回车, Key_Enter:数字小键盘的回车QMessageBox::information(this,"电话号码",m_strTel);//弹出提示框,显示输入的电话号码}//return true;//当前事件已经得到了处理,不会继续分发了return false;//当前事件 当前的组件处理不了,交由父窗口继续处理}}return QLineEdit::event(ev);//其他类型的事件继续走分发
}void myLineEdit::keyPressEvent(QKeyEvent * pKey)
{qDebug()<<"keyPressEvent="<<pKey->key();if(pKey->key()==Qt::Key_Backspace){//如果是backspace键//m_strTel是定义在类中的属性,公有的属性m_strTel= m_strTel.left(m_strTel.size()-1);//截取QString stel=text();setText(stel.left(stel.size()-1));}else if(m_strTel.size()<11){//对显示的电话号码中间四位进行加密处理m_strTel+=QString::number(pKey->key()-Qt::Key_0);if(m_strTel.size()<=3){setText(m_strTel);}else if(m_strTel.size()>3&&m_strTel.size()<7){QString s=m_strTel.left(3);for(int i=3;i<m_strTel.size();i++){s+="*";}setText(s);}else{QString s=m_strTel.left(3)+"****"+m_strTel.right(m_strTel.size()-7);setText(s);}}
}
4.将子类与组件进行绑定

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

c++ qt--事件(第六部分)

c qt–事件&#xff08;第六部分&#xff09; 一.编辑伙伴&#xff0c;编辑顺序&#xff08;按TAB进行切换&#xff09; 1.编辑伙伴 此功能在设计界面如下的位置 1.设置伙伴关系 鼠标左键长按一个Label组件然后把鼠标移到另一个组件上 2.伙伴关系的作用 伙伴关系的作用就是…...

嵌入式系统入门实战:探索基本概念和应用领域

嵌入式系统是一种专用的计算机系统,它是为了满足特定任务而设计的。这些系统通常具有较低的硬件资源(如处理器速度、内存容量和存储容量),但具有较高的可靠性和实时性。嵌入式系统广泛应用于各种领域,如家用电器、汽车、工业控制、医疗设备等。 嵌入式系统的基本概念 微控…...

关于hive sql进行调优的理解

这是一个面试经常面的问题&#xff0c;很不幸&#xff0c;在没有准备的时候&#xff0c;我面到了这个题目&#xff0c;反思了下&#xff0c;将这部分的内容进行总结&#xff0c;给大家一点分享。 hive其实是基于hadoop的数据库管理工具&#xff0c;底层是基于MapReduce实现的&a…...

十大排序算法

一、冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单直观的排序算法。它重复地走访要排序的数列&#xff0c;一次比 较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经…...

PIP 常用操作汇总

1. 升级 python -m pip install --upgrade pip2. 列出所有安装包 pip list3. 查找特定包 pip list | findstr xxx4. 查看特定包 pip show xxx5. 安装软件包 pip install pyzmq24.0.16. 卸载软件包 pip uninstall -y pyzmq7. 查看配置 # 生效的配置&#xff08;global -&…...

线性代数的本质笔记(3B1B课程)

文章目录 前言向量矩阵行列式线性方程非方阵点积叉积基变换特征向量与特征值抽象向量空间 前言 最近在复习线代&#xff0c;李永乐的基础课我刷了一下&#xff0c;感觉讲的不够透彻&#xff0c;和我当年学线代的感觉一样&#xff0c;就是不够形象。 比如&#xff0c;行列式为…...

快速掌握MQ消息中间件rabbitmq

快速掌握MQ消息中间件rabbitmq 目录概述需求&#xff1a; 设计思路实现思路分析1.video 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,c…...

Git push拦截

遇到的问题 今天想提交代码到gitee&#xff0c;结果发现被拦截了&#xff0c;有段提示“forbidden by xxxx”… 我记得xxxx好像是公司的一个防泄密的东西… 这个东西是怎么实现的呢&#xff1f; 解决 原来git提供很多hook&#xff0c;push命令就有一个pre-push的hook&#x…...

拼多多anti-token分析

前言&#xff1a;拼多多charles抓包分析发现跟商品相关的请求头里都带了一个anti-token的字段且每次都不一样,那么下面的操作就从分析anti-token开始了 1.jadx反编译直接搜索 选中跟http相关的类对这个方法进行打印堆栈 结合堆栈方法调用的情况找到具体anti-token是由拦截器类f…...

基于微信小程序的中医体质辨识文体活动的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于微信小程序的中医体质辨识文体活动的设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java s…...

4.16 TCP 协议有什么缺陷?

目录 升级 TCP 的工作很困难 TCP 建立连接的延迟 TCP 存在队头阻塞问题 网络迁移需要重新建立 TCP 连接 升级 TCP 的工作很困难&#xff1b;TCP 建立连接的延迟&#xff1b;TCP 存在队头阻塞问题&#xff1b;网络迁移需要重新建立 TCP 连接&#xff1b; 升级 TCP 的工作很…...

VMware 修改ip地址 虚拟机静态ip设置 centos动态ip修改为静态ip地址 centos静态ip地址 vmware修改ip地址

虚拟机的centos服务器经常变换ip&#xff0c;测试起来有些麻烦&#xff0c;故将动态ip修改为静态ip 1. 查看vmware 虚拟机网络配置&#xff1a; 点击编辑&#xff0c;打开虚拟网络配置 2. 选中nat模式&#xff0c;点击nat设置&#xff0c;最终获取网关ip: 192.168.164.2 3. 进…...

Deepin添加Ubuntu源

升级Deepin V23后&#xff0c;无法安装Zeal了&#xff0c;后面发现可以通过ubuntu源来安装。参考了以下两个文档。 添加Ubuntu源1 添加Ubuntu源2 1.添加ubuntu.list sudo vim /etc/apt/sources.list.d/ubuntu.list 2.添加中科大Ubuntu源 deb http://mirrors.ustc.edu.cn/…...

Mysql的多表查询和索引

MySQL 多表查询 当两个表查询时&#xff0c;从第一张表中取出一行和第二张表的每一行进行组合 返回结果含有两张表的所有列&#xff0c;一共返回的记录数第一张表行数*第二张表的行数&#xff08;笛卡尔积&#xff09; -- ?显示雇员名,雇员工资及所在部门的名字 【笛卡尔集…...

Java设计模式之建造者模式

建造者模式&#xff0c;又称生成器模式&#xff1a;将一个复杂的构建与其表示相分离&#xff0c;使得同样的构建过程可以创建不同的表示。 三个角色&#xff1a;建造者、具体的建造者、监工、使用者 建造者角色&#xff1a;定义生成实例所需要的所有方法&#xff1b; 具体的建…...

H5商城公众号商城系统源码 积分兑换商城系统独立后台

网购商城系统源码 积分兑换商城系统源码 独立后台附教程 测试环境&#xff1a;NginxPHP7.0MySQL5.6thinkphp伪静态...

华为OD机试 - 完全数计算(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示六、纵览全局 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多&…...

每日一学——Vlan配置

VLAN&#xff08;Virtual Local Area Network&#xff09;是虚拟局域网的缩写&#xff0c;它是一种将多台主机和网络设备逻辑上划分成不同的局域网的技术。VLAN的实施可以基于端口、MAC地址、协议等多种方式进行。 VLAN的主要功能包括&#xff1a; 分割网络&#xff1a;VLAN可…...

Pimpl模式

写在前面 Pimpl(Pointer to implementation&#xff0c;又称作“编译防火墙”) 是一种减少代码依赖和编译时间的C编程技巧&#xff0c;其基本思想是将一个外部可见类(visible class)的实现细节&#xff08;一般是所有私有的非虚成员&#xff09;放在一个单独的实现类(implemen…...

Python 密码破解指南:5~9

协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【OpenDocCN 饱和式翻译计划】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 收割 SB 的人会被 SB 们封神&#xff0c;试图唤醒 SB 的人是 SB 眼中的 SB。——SB 第三定律 五、凯…...

2026前端面试题

1.vue的通信方式Vue组件通信方式根据组件间的关系&#xff08;父子、兄弟、跨级、任意组件&#xff09;可分为多种方案。一、父子组件通信props&#xff08;父-子&#xff09;父组件通过属性向子组件传递数据&#xff0c;子组件通过defineProps接收<!-- 父组件 --> <C…...

ECharts 5.4.3实战:3步打造科技感爆棚的流光折线图(附完整代码)

ECharts 5.4.3实战&#xff1a;3步打造科技感爆棚的流光折线图&#xff08;附完整代码&#xff09; 在数据可视化领域&#xff0c;ECharts凭借其强大的功能和灵活的配置选项&#xff0c;已经成为前端开发者的首选工具之一。特别是其丰富的动画效果&#xff0c;能够为静态数据注…...

Typora与AI结合:使用万象熔炉·丹青幻境为Markdown文档自动配图

Typora与AI结合&#xff1a;使用万象熔炉丹青幻境为Markdown文档自动配图 不知道你有没有过这样的体验&#xff1a;在Typora里写完一篇技术博客或项目文档&#xff0c;内容详实&#xff0c;逻辑清晰&#xff0c;但通篇下来全是文字&#xff0c;总觉得少了点什么。想配几张图吧…...

bilibili-downloader完全指南:从入门到精通的4个关键步骤

bilibili-downloader完全指南&#xff1a;从入门到精通的4个关键步骤 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 一、痛点分析&am…...

Shiny框架终极指南:输入控件与输出渲染的完美交互原理

Shiny框架终极指南&#xff1a;输入控件与输出渲染的完美交互原理 【免费下载链接】shiny Easy interactive web applications with R 项目地址: https://gitcode.com/gh_mirrors/sh/shiny Shiny是R语言生态中一款强大的交互式Web应用框架&#xff0c;它让数据科学家和分…...

Qwen3-Reranker-0.6B一文详解:轻量0.6B参数如何实现SOTA级重排序性能

Qwen3-Reranker-0.6B一文详解&#xff1a;轻量0.6B参数如何实现SOTA级重排序性能 1. 引言&#xff1a;为什么你需要关注这个0.6B的小模型&#xff1f; 如果你用过搜索引擎&#xff0c;肯定有过这样的体验&#xff1a;输入一个问题&#xff0c;搜出来一堆结果&#xff0c;但真…...

intv_ai_mk11行业落地:教育机构课件辅助生成、HR招聘文案批量产出案例

intv_ai_mk11行业落地&#xff1a;教育机构课件辅助生成、HR招聘文案批量产出案例 1. 模型能力与行业价值 intv_ai_mk11作为一款基于Llama架构的文本生成模型&#xff0c;在教育培训和人力资源领域展现出独特的实用价值。这个开箱即用的解决方案特别适合需要快速处理大量文本…...

LumiPixel开箱即用教程:快速上手这个专为人像设计的AI创作平台

LumiPixel开箱即用教程&#xff1a;快速上手这个专为人像设计的AI创作平台 1. 认识LumiPixel&#xff1a;纯净人像创作平台 LumiPixel: Canvas Quest是一款专注于人像创作的AI视觉平台&#xff0c;它将先进的Z-Image扩散模型与复古像素艺术美学完美结合。这个平台特别适合需要…...

Whisper语音识别镜像快速部署:5分钟搭建多语言客服转写服务

Whisper语音识别镜像快速部署&#xff1a;5分钟搭建多语言客服转写服务 1. 引言&#xff1a;语音识别在客服场景的挑战 在全球化的商业环境中&#xff0c;客服中心面临着多语言支持的巨大挑战。传统语音识别系统往往需要为每种语言单独部署模型&#xff0c;不仅成本高昂&…...

3步解锁音乐自由:NCMDump帮你破解网易云音乐NCM格式

3步解锁音乐自由&#xff1a;NCMDump帮你破解网易云音乐NCM格式 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为下载的网易云音乐只能在特定App里播放而烦恼吗&#xff1f;当你精心挑选的歌单无法在车载音响、运动手表或家庭音…...