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.将子类与组件进行绑定

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

飞天使-k8s基础组件分析-安全

文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥&#xff1f; 答&#xff1a;集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有…

学习ts(十一)本地存储与发布订阅模式

localStorage实现过期时间 目录 准备 安装 npm i rollup typescript rollup-plugin-typescript2// tsconfig.json"module": "ESNext","moduleResolution": "node", "strict": false, // rollup.config.js import …

【Unity3D赛车游戏】【五】Unity中汽车加速效果是如何优化的?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

ai课堂行为分析检测评估

ai课堂行为分析检测评估系统通过yolo网络模型算法&#xff0c;ai课堂行为分析检测评估算法利用摄像头采集学生的图像&#xff0c;视线跟踪技术的智能教学系统由情感模型、教师模型、学生模型和课程模型四个模型组成。用户端的视线及表情信息通过摄像头采集并传递到情感模型情感…

[C++] STL_vector 迭代器失效问题

文章目录 1、前言2、情况一&#xff1a;底层空间改变的操作3、情况二&#xff1a;指定位置元素的删除操作4、g编译器对迭代器失效检测4.1 扩容4.2 erase删除任意位置&#xff08;非尾删&#xff09;4.3 erase尾删 5、总结 1、前言 **迭代器的主要作用就是让算法能够不用关心底…

如何查看友商的Camera配流情况

有时候&#xff0c;我们想看下竞品友商机器上&#xff0c;使用到camera的app 申请的分辨率情况。 如果只是抓logcat日志&#xff0c;我们可能没法从中获取到有效信息&#xff0c;毕竟一般出货的机器版本&#xff0c;基本已经把大部分相关日志都给关闭了。 那有没其它方式&…

【Java基础增强】类加载器和反射

1.类加载器 1.1类加载器【理解】 作用 负责将.class文件&#xff08;存储的物理文件&#xff09;加载在到内存中 1.2类加载的过程【理解】 类加载时机 创建类的实例&#xff08;对象&#xff09; 调用类的类方法 访问类或者接口的类变量&#xff0c;或者为该类变量赋值 …

最新两年工作经验总结

最新两年工作经验总结 前言URP的使用1&#xff1a;如何开启URP1、老项目升级为URP2、创建新项目时选择URP创建 2&#xff1a;URP阴影的设置 PolyBrush的使用&#xff08;地图编辑插件&#xff09;制作山峰or低谷边缘柔化雨刷上色制造场景中的物体贴图地形创建容易踩坑的点ProBu…

数值类特征

数值类特征 数值类特征是最常见的一种特征类型&#xff0c;数值可以直接喂给算法。 为了提升效果&#xff0c;我们需要对数值特征做一些处理&#xff0c;本文介绍了4种常见的处理方式&#xff1a;缺失值处理、二值化、分桶、缩放。 什么是数值类特征&#xff1f; 数值类特征就是…

各地区结婚、离婚、再婚等数据(1990-2021年)

涵盖了1990年至2021年各地区的结婚、离婚以及再婚情况。通过对此数据进行分析&#xff0c;我们可以了解婚姻趋势的演变和地区之间的差异。数据反映了人们的婚姻决策、家庭变化以及社会动态&#xff0c;为研究家庭结构和社会变迁提供了有价值的信息。 一、数据介绍 数据名称&a…

git操作:将一个仓库的分支提交到另外一个仓库分支

这个操作&#xff0c;一般是同步不同网站的同个仓库&#xff0c;比如说gitee 和github。某个网站更新了&#xff0c;你想同步他的分支过来。然后基于分支开发或者其它。 操作步骤 1.本地先clone 你自己的仓库。也就是要push 分支的仓库。比如A仓库&#xff0c;把B仓库分支&am…

Node.JS教程

文章目录 Node.JSNode.js学习指南一、Node.js基础1.认识Node.js2.开发环境搭建3. 模块、包、commonJS3.1、为什么要有模块化开发&#xff1f;3.2、CommonJS规范3.3、 modules模块化规范写法 4.Npm&Yarn4.1、npm使用4.2、全局安装nrm4.3、yarn使用 持续更新中总结 Node.JS N…

物理机ping不通windows server 2012

刚才尝试各种方法&#xff0c;在物理机上就是ping不能wmware中的windows server 2012 . 折腾了几个小时&#xff0c;原来是icmp 被windows server 2012 禁用了 现在使用使用以下协议就能启用Icmp协议。 netsh firewall set icmpsetting 8然后&#xff0c;就能正常ping 通虚…

Ubuntu20 安装 libreoffice

1 更新apt-get sudo apt-get update2 安装jdk 查看jdk安装情况 Command java not found, but can be installed with:sudo apt install default-jre # version 2:1.11-72, or sudo apt install openjdk-11-jre-headless # version 11.0.138-0ubuntu1~20.04 sud…

Android沉浸式实现(记录)

沉浸式先看效果 直接上代码 Android manifest文件 android:theme"style/Theme.AppCompat.NoActionBar"布局文件 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"ht…

js实现数据关联查找更新。数据求和验证

为了实现这个功能我们和后端定义了数据结构 data:{id&#xff1a;‘’&#xff0c;formInfo:,formInfo2:,formInfo3:,formInfo4:, ......deailData:[ // 明细数据 // saleData 查询带出的对应明细序列号数据{ id:, ocopyId:, copyId:, odoId:, ......, saleData:[ { id:, oc…

SpringCloud学习笔记(九)_使用Java类加载SpringBoot、SpringCloud配置文件

我们都知道平常在使用SpringBoot和SpringCloud的时候&#xff0c;如果需要加载一两个配置文件的话我们通常使用Value(“${属性名称}”)注解去加载。但是如果配置文件属性特别多的时候使用这种方式就显得特别的不友好了。 比如说&#xff0c;我们要加载下方这个名为application.…

C# 使用NPOI操作EXCEL

1.添加NOPI 引用->管理NuGet程序包->添加NOPI 2.相关程序集 3.添加命名空间 using NPOI.HSSF; using NPOI.XSSF; using System.IO; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; 4.样例 //NPOI读入dgv private void button1_Click(object sender, EventArgs…

【详解】文本检测OCR模型的评价指标

关于文本检测OCR模型的评价指标 前言&#xff1a;网上关于评价标准乱七八糟的&#xff0c;有关于单词的&#xff0c;有关于段落的&#xff0c;似乎没见过谁解释一下常见论文中常用的评价指标具体是怎么计算的&#xff0c;比如DBNet&#xff0c;比如RCNN&#xff0c;这似乎好像…

GIT 常用指令

基础指令 $ git init #初始化仓库&#xff0c;在该文件夹创建的为workspace$ git add . #已暂存 [.通配符&#xff0c;全部添加]$ git commit -m "log add file" #提交到仓库,并写了日志 ”log add file“$ git status #查看状态&#xff0c;可查看被修改的文件…