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

news2024/9/23 21:22:25

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 handler
     void 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.coloradmin.cn/o/931124.html

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

相关文章

ant design自定义展开折叠查看子项和点击行查看详情

实现思路&#xff1a;通过配置rowSelection&#xff0c;列表项是否可选择来实现。 页面内容&#xff1a; <a-table :dataSource"integrationBonds" :columns"columns" :customRow"customintegrationBondsRow":pagination"{hideOnSingle…

IDEA 配置注释模板

目录 一、配置类模板注释 二、配置方法注释 一、配置类模板注释 打开IDEA&#xff0c;打开settings(快捷键&#xff1a;Ctrl Alt s)&#xff0c;选择Editor&#xff0c;找到File and Code Templates&#xff0c;设置需要配置注释的文件类型&#xff0c;如下图所示&#xf…

深入剖析Kubernetes之Pod的实现原理

文章目录 概述Pod 的实现原理容器设计模式容器与虚拟机 Pod 的本质&#xff1a;Pod&#xff0c;实际上是在扮演传统基础设施里“虚拟机”的角色&#xff1b;而容器&#xff0c;则是这个虚拟机里运行的用户程序。 概述 容器&#xff0c;就是未来云计算系统中的进程&#xff1b;…

CSDN编程题-每日一练(2023-08-26)

CSDN编程题-每日一练&#xff08;2023-08-26&#xff09; 一、题目名称&#xff1a;排查网络故障二、题目名称&#xff1a;贪食四人帮三、题目名称&#xff1a;阿波罗的魔力宝石 一、题目名称&#xff1a;排查网络故障 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目…

一文彻底告别 C盘 红色风景线

前言 想必使用 Windows 的用户肯定遇到过 C盘 爆满的问题吧&#xff0c;感觉平时我们也没有怎么使用 C盘 &#xff0c;但是 C盘 却总是慢慢成长&#xff0c;最后留给我们的就是一道靓丽的红色风景线。不过不用担心&#xff0c;相信读完本文后&#xff0c;在座的各位都可以永久…

精选6个C++项目,推荐新人练手首选!

无论做什么项目&#xff0c;在写简历时&#xff0c;最好要整理出项目中的技术点&#xff0c;思考如何跟面试官介绍你的项目&#xff0c;要经得起面试官的提问。项目的话&#xff0c;可以考虑做下面的这几个&#xff1a; 如果你想给自己的简历增加C 项目经验,以下提供一些方向指…

【C++奇遇记】函数模板

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集 数据库专栏 初阶数据结构 &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如…

高效PDF校对:释放高质量内容的力量

在数字化世界中&#xff0c;内容是王者。随着企业和个人越来越依赖数字文档进行沟通、分享和创新&#xff0c;我们在PDF中传递的内容的质量变得至关重要。在这里&#xff0c;我们将探索高效的PDF校对如何帮助您释放高质量内容的真正潜力。 超越仅仅是“正确” 当我们谈论PDF校…

MBR400100CT-ASEMI肖特基模块400A 100V

编辑&#xff1a;ll MBR400100CT-ASEMI肖特基模块400A 100V 型号&#xff1a;MBR400100CT 品牌&#xff1a;ASEMI 封装&#xff1a;M2 恢复时间&#xff1a;&#xff1e;50ns 正向电流&#xff1a;400A 反向耐压&#xff1a;100V 芯片个数&#xff1a;2 引脚数量&…

Leetcode77. 组合

给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 回溯剪枝 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 class Solution {public List<List<Integer>> combine(int n, i…

展锐A13 Camera Hal dispatch模块流程 --- 上

4月份就知道展锐A13的Camera Hal有大的变动&#xff0c;但是最近一直在做一个MTK的项目&#xff0c;没去看这个新增部分的流程。最近有时间&#xff0c;就把A13上Camera Hal新增的部分流程捋 了一下&#xff0c;过程是痛苦的&#xff0c;但是坚持一遍遍去读代码&#xff0c;在结…

移动,电信,联通流量卡该怎么选?

是电信便宜&#xff0c;移动稳定&#xff0c;还是联通性价比高&#xff1f; ​ 今天&#xff0c;小编从三大流量卡的优缺点方面来讲&#xff0c;教你如何选择流量卡了。 一、移动流量卡 优点&#xff1a;信号好&#xff0c;可以说走到什么地方都有信号。 缺点&#xff1a;资…

Leaflet开发入门

Leaflet开发入门 开发环境配置Leaflet开发库开发移动端Hybrid App或移动Web App 开发环境配置 电子地图已经渗透到O2O、生活服务、出行等领域&#xff0c;传统的GIS也孕育着互联网基因。在国内互联网电子地图领域&#xff0c;百度地图和高德地图较为出色&#xff0c;天地图作为…

js的使用之时间如何定义,窗口加载事件

1.时间如何定义 1.1 date的其他的属性 带出星期几的写法 var arr [星期日,星期一,星期二,星期三,星期四,星期五,星期六,星期天] var day date.getDay(); console.log(arr[day]); 1.2 日期的格式化 1.3 时分秒的写法 固定写法&#xff1a;如果想要写成00:00:00这种形式&am…

阿里云服务器搭建FRP实现内网穿透-P2P

前言 在了解frp - p2p之前&#xff0c;请先了解阿里云服务器搭建FRP实现内网穿透-转发: 文章地址 1、什么是frp - p2p frp&#xff08;Fast Reverse Proxy&#xff09;是一个开源的反向代理工具&#xff0c;它提供了多种功能&#xff0c;包括端口映射、流量转发和内网穿透等。…

cmake 交叉编译应用程序:手动设置链接脚本

前言 在使用 cmake 交叉编译应该应用程序时&#xff0c;好像没有手动设置【链接脚本】&#xff0c;也能正常构建生成 Makefile&#xff0c;并且可以正常 Make 生成需要的 应用程序。 但是有些应用程序&#xff0c;需要手动指定【链接脚本】&#xff0c;比如修改链接地址&#…

五、多表查询-5.自连接

一、语法 二、演示-自连接&#xff08;内连接&#xff09; 【例】查询员工 及其 所属领导的名字&#xff08;managerid&#xff0c;领导也是员工表emp1表中的数据&#xff09; &#xff01;&#xff01;必须起别名&#xff01;&#xff01; ——内连接只查询交集部分的数据 …

微调真香,漫画科技博主竟然在用国产大模型生成系列漫画女主角

有一说一&#xff0c;《微调真香&#xff0c;漫画科技博主竟然在用国产大模型生成系列漫画女主角》不是标题党。 连我也不得不相信&#xff0c;作为“亲爱的数据”创始人&#xff0c;我确实在用人工智能大模型生成自家特有风格的漫画。 市面上&#xff0c;海内外&#xff0c;用…

HAproxy服务及keepalived+haproxy高可用

本节主要学习AHproxy 的概述&#xff0c;安装&#xff0c;调度算法&#xff0c;配置文件&#xff0c;负载均衡&#xff0c;配置syslog日志&#xff0c;keepalivedhaproxy实现高可用。 目录 一、概述 1、简介 2、核心功能 3、关键特性 4、应用场景 二、安装 1.内核配置 …

【附安装包】Marvelous designer12|3D服装设计

软件下载 软件&#xff1a;Marvelous designer版本&#xff1a;12语言&#xff1a;简体中文大小&#xff1a;1.49G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://p…