C++Qt学习——Qt信号槽

news2024/10/7 7:28:36

信号和槽是Qt编程的基础,他们的存在使得在Qt中处理界面各个组件的交互操作变得更加直观简单。
信号(SUGNAL):也就是发送者发送的函数信号,例如PushButtun最常见的信号就是鼠标单击的时候发射的click()信号
槽(SLOT):也就是说接收者对信号响应的函数,槽也是一个函数。
用一个生活中的例子就是: 

 

目录

 

1、使用Qt的信号槽

1.1、新建一个UI文件

 1.2、双击进入mainwindow.ui

 1.3、在ui界面拖入一个PushButtun

1.4、双击修改按钮名称,并修改字体大小

1.5、设置按键位置和大小

1.6、将按钮当作发送者(对象),mainwindow当作接收者

 1.7、点击Signal_Slots Edit

 1.8、设置事件

方法一:先点击绿色的加号,再双击发送者,选择pushbuttun,一次选择信号为click()等。

 方法二:点击左上角的信号槽连接

 A、按住按钮拖出来,弹出窗口,最后点击ok。会发现会出现和方法一一样的效果

方法三:用代码写

A、选中按钮,右键转到槽

B、点击click,点击ok。跳转到MainWindow函数,写下案件触发的事件,打印必须引用

C、按键F4,跳转到声明,这是Qtcreator创建好的

D、按住ctrl+R,运行即可

2、Qt信号槽介绍

2.1、在mainwindow.cpp里面写

2.2、按住ctrl+R,运行即可

3、自定义信号槽

3.1、按住Ctrl+N,创建Student和School类

3.2、点击student.h发现已经将信号创建好了,因为我们设置的学校是发送者,所以直接在signals下直接声明函数

3.3、在student.h里面自定义槽

3.4、在mainwindow.h里面引入头文件以及class类

3.5、创建school和student的对象

3.6、在mainwindow.cpp里面实例化

3.7、连接信号槽

3.7.1、一个信号可以链接多个槽

3.7.2、多个信号可以链接同一个槽

3.7.3、 一个信号可以链接另外一个信号


1、使用Qt的信号槽

1.1、新建一个UI文件

 1.2、双击进入mainwindow.ui

 1.3、在ui界面拖入一个PushButtun

1.4、双击修改按钮名称,并修改字体大小

1.5、设置按键位置和大小

1.6、将按钮当作发送者(对象),mainwindow当作接收者

 1.7、点击Signal_Slots Edit

 1.8、设置事件

方法一:先点击绿色的加号,再双击发送者,选择pushbuttun,一次选择信号为click()等。

那么这个就是点击按钮主窗口关闭

 方法二:点击左上角的信号槽连接

 A、按住按钮拖出来,弹出窗口,最后点击ok。会发现会出现和方法一一样的效果

 

方法三:用代码写

A、选中按钮,右键转到槽

B、点击click,点击ok。跳转到MainWindow函数,写下案件触发的事件,打印必须引用
#include <QDebug>

C、按键F4,跳转到声明,这是Qtcreator创建好的

D、按住ctrl+R,运行即可

2、Qt信号槽介绍

信号与槽关联是用QObject::connect()函数来实现的,基本格式是:

QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

在应用中,OBject是所有Qt类的基类,因此可以将上面的话换成

connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

2.1、在mainwindow.cpp里面写

this就是MainWindow,主窗口

2.2、按住ctrl+R,运行即可

3、自定义信号槽

3.1、按住Ctrl+N,创建Student和School类

3.2、点击student.h发现已经将信号创建好了,因为我们设置的学校是发送者,所以直接在signals下直接声明函数

3.3、在student.h里面自定义槽

定义函数

3.4、在mainwindow.h里面引入头文件以及class类

3.5、创建school和student的对象

3.6、在mainwindow.cpp里面实例化

3.7、连接信号槽

3.7.1、一个信号可以链接多个槽

    connect(school, SIGNAL(sendMessages()), student, SLOT(comeBackToClass()));
    connect(school, SIGNAL(sendMessages()), this, SLOT(hide()));

运行不报错

3.7.2、多个信号可以链接同一个槽

    connect(school, SIGNAL(sendMessages2()), student, SLOT(comeBackToClass()));
    connect(school, SIGNAL(sendMessages2()), student, SLOT(close()));

运行不报错

3.7.3、 一个信号可以链接另外一个信号

emit:发送信号的关键字

    connect(school, SIGNAL(sendMessages2()), student, SIGNAL(iconSizeChanged()));
    emit school->sendMessages();

运行不报错

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

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

相关文章

华为配置ISP选路实现报文按运营商转发

CLI举例&#xff1a;配置ISP选路实现报文按运营商转发 介绍通过配置ISP选路实现报文按运营商转发的配置举例。 组网需求 如图1所示&#xff0c;FW作为安全网关部署在网络出口&#xff0c;企业分别从ISP1和ISP2租用一条链路。 企业希望访问Server 1的报文从ISP1链路转发&#…

Python机器学习预测+回归全家桶,新增TCN,BiTCN,TCN-GRU,BiTCN-BiGRU等组合模型预测...

截止到本期&#xff0c;一共发了4篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&#xff01; 2.机器学习预测全家桶-Python&#xff…

el-table中 el-popover 性能优化

场景&#xff1a;在 el-table 中使用 el-popover ,出现了 loading 加载卡顿的问题&#xff0c;接口返回的数据的时间大概是 140ms &#xff0c;所以不是接口慢的原因&#xff1b;通过对表中结构的逐步排查&#xff0c;发现是表中的 某一行 所影响的&#xff1b;并且 其中含有 e…

qt 汉字输出 中文输出 显示乱码 qDebug() 乱码 解决

要正确显示汉字&#xff0c;必须要先了解计算机文字编码相关知识&#xff0c;参考&#xff1a;unicode ucs2 utf16 utf8 ansi GBK GB2312 互转 及 渲染_ucs2编码转换-CSDN博客 1、汉字输出到 应用程序输出面板 qt 自定义的输出类qDebug() 、QDebug对象、QMessageLogger默认输…

单例模式及线程安全的实践

&#x1f31f; 欢迎来到 我的博客&#xff01; &#x1f308; &#x1f4a1; 探索未知, 分享知识 !&#x1f4ab; 本文目录 引言基本的单例模式长啥样&#xff1f;怎样才能线程安全&#xff1f;**懒汉模式** ( 双 重 检 查 ) &#x1f389;总结&#x1f389; 引言 单例模式是个…

WebPack自动吐出脚本

window.c c; window.res ""; window.flag false;c function (r) {if (flag) {window.res window.res "${r.toString()}" ":" (e[r] "") ",";}return window.c(r); }代码改进了一下&#xff0c;可以过滤掉重复的方…

酷开科技发力研发酷开系统,让家庭娱乐生活更加丰富多彩

在这个快节奏的社会&#xff0c;家庭娱乐已成为我们日常生活中不可或缺的一部分&#xff0c;为了给家庭带来更多欢笑与感动&#xff0c;酷开科技发力研发出拥有丰富内容和技术的智能电视操作系统——酷开系统&#xff0c;它集合了电影、电视剧、综艺、游戏、音乐等海量内容&…

腾讯云和阿里云4核8G云服务器多少钱一年和1个月费用对比

4核8G云服务器多少钱一年&#xff1f;阿里云ECS服务器u1价格955.58元一年&#xff0c;腾讯云轻量4核8G12M带宽价格是646元15个月&#xff0c;阿腾云atengyun.com整理4核8G云服务器价格表&#xff0c;包括一年费用和1个月收费明细&#xff1a; 云服务器4核8G配置收费价格 阿里…

6.S081的Lab学习——Lab1: Xv6 and Unix utilities

文章目录 前言一、启动xv6(难度&#xff1a;Easy)解析&#xff1a; 二、sleep(难度&#xff1a;Easy)解析&#xff1a; 三、pingpong&#xff08;难度&#xff1a;Easy&#xff09;解析&#xff1a; 四、Primes(素数&#xff0c;难度&#xff1a;Moderate/Hard)解析&#xff1a…

pymysql连不上mysql的原因

我试了两种解决办法。可以参考一下 第一种&#xff1a;查看有没有打开mysql服务 第二种&#xff1a;刷新 MySQL 用户权限 password改成自己的密码 GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY password WITH GRANT OPTION;FLUSH PRIVILEGES; 第三种&#xff1a;检…

CSS3的一些常用语句以及解释

margin和padding position static 该关键字指定元素使用正常的布局行为&#xff0c;即元素在文档常规流中当前的布局位置。此时 top, right, bottom, left 和 z-index 属性无效。 relative 该关键字下&#xff0c;元素先放置在未添加定位时的位置&#xff0c;再在不改变页面…

C# 入门

教程&#xff1a; .NET | 构建。测试。部署。 (microsoft.com) C# 文档 - 入门、教程、参考。 | Microsoft Learn C# 数据类型 | 菜鸟教程 (runoob.com) IDE&#xff1a; Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com) Rider&#xff1a…

Net8 ABP VNext集成FreeSql、SqlSugar

ABP可以快速搭建开发架构&#xff0c;但是内置的是EFCore&#xff0c;国内中小企业使用FreeSql与SqlSugar还是较多&#xff0c;为新手提供使用提供参考 ABP、FreeSql、SqlSugar参考地址&#xff1a; ABP Framework | Open source web application framework for ASP.NET Core…

Buildroot 之二 详解构建架构、流程、external tree、示例

构建系统 Buildroot 中的构建系统使用的是从 Linux Kernel(4.17-rc2) 中移植的 Kconfig(配置) + Makefile & Kbuild(编译)这套构建系统,移植后的源码位于 support/kconfig/ 目录下。Buildroot 本身是一个构建系统,与直接编译源码不同,因此,它对这套系统进行了比较…

【恒源智享云】conda虚拟环境的操作指令

conda虚拟环境的操作指令 由于虚拟环境经常会用到&#xff0c;但是我总忘记&#xff0c;所以写个博客&#xff0c;留作自用。 在恒源智享云上&#xff0c;可以直接在终端界面输入指令&#xff0c;例如&#xff1a; 查看已经存在的虚拟环境列表 conda env list查看当前虚拟…

SpringDataRedis笔记

spring:application:name: springdataredisredis:host: 120.0.0.1port: 6379password: 123456lettuce:pool:#最大连接数 默认就是8max-active: 8#最大空闲连接 默认就是8max-idle: 8#最小空闲连接 默认是0min-idle: 0#连接等待时间 默认-1无限等待max-wait: 100RedisTemplate默…

es 进阶查询

准备数据 先准备一些数据 #指定ik分词器 PUT /es_db {"settings" : {"index" : {"analysis.analyzer.default.type": "ik_max_word"}} }# 创建文档,指定id PUT /es_db/_doc/1 { "name": "张三", "sex"…

【鸿蒙 HarmonyOS 4.0】Web组件

一、介绍 页面加载是Web组件的基本功能。根据页面加载数据来源可以分为三种常用场景&#xff0c;包括加载网络页面、加载本地页面、加载HTML格式的富文本数据。 二、加载网页 2.1、加载在线网页 Web组件的使用非常简单&#xff0c;只需要在Page目录下的ArkTS文件中创建一个…

ArcGIS学习(十六)基于交通网络的城市情景分析

ArcGIS学习(十六)基于交通网络的城市情景分析 本任务给大家带来一个非常重要的内容一一基于交通网络的城市情景分析。基于交通网络模拟交通出行并进行相关分析是ArcGIS里面一种常用的分析方法,大家一定要掌握!本任务包括三个关卡: 交通网络模型构建基于交通网络模型的基本…

mysql show profile 简单使用

mysql官网 http://dev.mysql.com/doc/refman/ 1、是否支持&#xff0c;看看当前的mysql版本是否支持 show variables like profiling;2、开启功能&#xff0c;默认是关闭&#xff0c;使用前需要开启 set profilingon;3、运行sql 4、查看结果&#xff0c;show profiles; 5、…