【Test 58】 Qt信号与槽机制! 高频的Qt 知识点!

文章目录

      • 1.Qt 信号与槽机制原理(Signal & Slot)
      • 2. QObject 类 connect 的介绍
      • 3. 信号与槽机制连接方式
      • 4. 信号和槽机制优势及其效率:
      • 5. 信号与槽机制应用

1.Qt 信号与槽机制原理(Signal & Slot)

🐧Ⅰ. 信号(signal): 所谓信号槽(观察者模式),信号本质是事件。信号展现方式
就是函数。当某一个事件发生之后,则发出一个信号(signal)。


🐧Ⅱ. 槽(slot):就是对信号响应的函数,槽就是一个函数。槽函数与普通函数区别:
槽函数可以与一个信号关联,当信号被发射的时候,关联的槽函数被自动执行处
理。信号与槽关联是使用 QObject::connect() 函数进行实现;


🐧Ⅲ. 信号与槽的关系图如下:

🍎a、信号函数只需要声明(不需要定义(实现)),而槽函数需要定义(实现)

🍎b、信号和槽机制底层是通过函数之间进行相互调用实现的。每个信号都可以用
函数来表示,称为信号函数;每个槽也可以用函数表示,称为槽函数。

🍎c、槽函数可以使用 public slots / protected slots / private slots 修饰。signals
和 slots 是 Qt 开发当中在 C++语言基础之上扩展的关键词,专门用于指明信号函数和槽函数。

在这里插入图片描述



2. QObject 类 connect 的介绍


在这里插入图片描述

🐧参数 1 sender:发出信号的对象;

🐧参数 2 signal:sender 对象的信号;

🐧参数 3 receiver:信号接收者;

🐧参数 4 method:receiver 对象的槽函数,当检测到 sender 信号,receiver
对象调用 method 方法。


3. 信号与槽机制连接方式

🍎① 一个信号可以跟另一个信号相连;

conect(object1,SIGNAL(signal1),object2,SIGNAL(signal1));

🍎② 同一个信号可以跟多个槽相连;

conect(object1,SIGNAL(signal2),object2,SIGNAL(slot2));
conect(object1,SIGNAL(signal2),object3,SIGNAL(slot1));

🍎③ 同一个槽可以响应多个信号。

conect(object1,SIGNAL(signal2),object2,SIGNAL(slot2));
conect(object3,SIGNAL(signal2),object2,SIGNAL(slot2));

🍎④ 常用的连接方案采用:

onect(object1,SIGNAL(signal),object2,SLOT(slot));

4. 信号和槽机制优势及其效率:

信号和槽机制优势: 松散耦合;类型安全。一个类若要支持信号和槽,就必须从 QObjectQObect 的子类继承。Qt 信号和槽机制不支持对模板的使用。

信号与槽机制效率:增强对象的之间通信的灵活性,但是也会损失一些性能。通过传递一个信号来调用槽函数将会比直接调用非虚函数运行速度慢,主要原因如下:

 🍎① 多线程的时候,信号可能需要排队等待

 🍎② 编组/解组传递的参数;

 🍎③ 安全地遍历所有的关联;

 🍎④ 需要定位接收信号的对象。

5. 信号与槽机制应用

🐧 实现计算圆⚪的体积的详细代码步骤:

🍎首先看我们要达到的效果图片如下所示

在这里插入图片描述


🐧① 先设置应用程序窗口标准的名称

在这里插入图片描述


🐧② 首先定义标签和命令按钮的成员变量,以及槽函数;
在这里插入图片描述



在这里插入图片描述



🐧③ 对标签和控件按钮进行表格布局

在下面这段代码中的 connect 连接函数中,
🐧参数 1 sender:发出信号的对象,文本编辑框 (lEdit 就是发出信号的对象;

🐧参数 2 signal:sender 对象的信号,文本编辑框的改变就是对象的信号;

🐧参数 3 receiver:信号接收者,当前对象的指针,是为了调用槽函数

🐧参数 4 method:receiver 对象的槽函数,当检测到 sender 信号,receiver
对象调用 method 方法。

在这里插入图片描述



🐧④ 槽函数计算圆球的体积的实现

setText ( ) 的参数只能设置 QString 类型,所以设置答案的时候要进行转换;

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

个人vsCode配置文件<setting.js>

个人vsCode配置文件setting.js 快速打开1、使用快捷键 CtrlShiftP ,然后搜索setting2、手动 自用配置 快速打开 1、使用快捷键 CtrlShiftP ,然后搜索setting 2、手动 自用配置 {"terminal.integrated.profiles.windows": {"PowerShell&…

Spring的Controller是单例还是多例,如何保证线程安全的。

目录 验证是否单例(默认单例) 多例测试 单例对象成员变量测试 多例对象成员变量测试 解决方案 结论: 补充说明 答案:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。 正…

大数据之HDFS磁盘扩容(linux磁盘扩容)

之所以扩容,是因为当前大数据平台已经接入了不同来源的数据,当执行mapreduce任务时,会发生磁盘爆满,导致hdfs爆红 具体扩容方案如下: 1、查看云磁盘分区情况 fdisk -l . 可以从图看出: /dev/vda 数据盘磁盘容量为21.5GB,包含/dev/vda1分区 /dev/vdb 数…

2024 年最新商家转账到零钱功能申请问题集中解答

鉴于诸多商户在申请商家转账到零钱时受到过时、错误经验文章的误导,基于我们数千次成功开通商家转账到零钱功能的丰富经验,特整理此篇文章,以期对新商户开通微信支付的商家转账到零钱功能提供有益帮助。以下将针对商家转账到零钱功能申请前、…

乐高小人分类项目

数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …

JDK7 JDK8 JDK9接口中的默认方法、静态方法、私有方法

JDK8开始之后接口新增的方法 JDK7以前:接口中只能定义抽象方法 JDK8的新特性:接口中可以定义有方法体的方法(默认、静态) JDK9的新特性:接口中可以定义私有方法 接口中的默认方法InterA package com.itheima.a06;p…

whistle手机抓包

环境:whistle:2.9.59 whistle手机抓包(ios可以抓小程序的包;安卓机不能抓小程序的包,但是小程序的有开发者工具就够用了) 以安卓手机为例(手机跟电脑要连同一个wifi) 1.电脑安装w…

【Git】之 【Bug】clone 克隆失败 过早的文件结束符

问题 解决 参考:git clone报错 过早结束问题解决方法 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 git config --global http.postBuffer 10024288000 git config --list

从一道题看利用sqlite打jdbc达到RCE

前言 从今年国赛的一道java题遇到了sqlite数据库去打jdbc达到RCE的姿势,故笔者写篇文章记下 复现 反编译源代码可以看见这三个数据库 这里提供了mysql sqlite psql 但mysql和psql都不行 这里我们用sqlite去打 jdbc就可以执行load_extension() CVE-2023-32697&#…

探索ChatGPT-4在解决化学知识问题上的研究与应用

1. 概述 近年来,人工智能的发展主要集中在 GPT-4 等大型语言模型上。2023 年 3 月发布的这一先进模型展示了利用广泛知识应对从化学研究到日常问题解决等复杂挑战的能力。也开始进行研究,对化学的各个领域,从化学键到有机化学和物理化学&…

Word2021中的The Mathtype DLL cannot be found问题解决(office 16+mathtype7+非初次安装)

问题描述,我的问题发生在word中无法使用自定义功能区中的mathtype 我的环境是:W11Word2021mathtype7 因为我是第二次安装mathtype7,所以我怀疑是因为没有卸载干净,于是我参考了下面这篇文章的做法 参考文章 1.首先重新卸载当前的…

Flutter开发效率提升1000%,Flutter Quick教程之定义Api(四)

现在我们来讲讲,如何建立Api 响应数据的变量。 这个变量,本质上就是对根据json数据生成model的引用。 这个name就是引用名。 这个path,就是引用的Model Data里面的具体字段,在实际操作过程中,校验是由右边的json数据…

[Bug]使用Transformers 微调 Whisper出现版本不兼容的bug

错误的现象 ImportError Traceback (most recent call last) <ipython-input-20-6958d7eed552> in () from transformers import Seq2SegTrainingArguments training_args Seq2SeqTrainingArguments( output_dir"./whisper-small-…

【Redis】解决 Redis 运行在 Protected Mode 下的 DENIED 错误:消除 Redis 受保护模式的完美方案

【Redis】解决 Redis 运行在 Protected Mode 下的 DENIED 错误&#xff1a;消除 Redis 受保护模式的完美方案 大家好 我是寸铁&#x1f44a; 总结了一篇【Redis】解决 Redis 运行在 Protected Mode 下的 DENIED 错误&#xff1a;消除 Redis 受保护模式的完美方案✨ 喜欢的小伙伴…

智慧启航 网联无限丨2024高通汽车技术与合作峰会美格智能分论坛隆重举行

5月30日下午&#xff0c;以“智慧启航 网联无限”为主题的2024高通汽车技术与合作峰会&美格智能分论坛在无锡国际会议中心隆重举行&#xff0c;本次论坛由高通技术公司与美格智能技术股份有限公司共同主办&#xff0c;上海市车联网协会、江苏省智能网联汽车产业创新联盟、江…

MI-SegNet: 基于互信息的超越领域泛化的超声图像分割

文章目录 MI-SegNet: Mutual Information-Based US Segmentation for Unseen Domain Generalization摘要方法实验结果 MI-SegNet: Mutual Information-Based US Segmentation for Unseen Domain Generalization 摘要 针对医学图像分割在不同领域间泛化能力有限的问题,特别是针…

构建自动化API数据抓取系统

构建一个自动化API数据抓取系统是一个涉及多个技术领域的复杂任务。这样的系统不仅要求高效的数据获取能力&#xff0c;还需要有稳定的数据处理、存储和错误处理机制。 1. 需求分析 在开始构建之前&#xff0c;明确你的需求至关重要。你需要确定要抓取的API、数据的频率、数据的…

vite自动导入

安装unplugin-auto-import https://github.com/unplugin/unplugin-auto-import#readme import AutoImport from unplugin-auto-import/vitereturn {plugins: [vue(), AutoImport({ imports: [vue], dts: ./auto-imports.d.ts })],resolve: {alias: {: fileURLToPath(new URL(…

用户界面设计详解:大厂设计师都在用的黄金法则

用户界面设计是什么&#xff1f; 用户界面&#xff08;User Interface&#xff0c;简称 UI&#xff09;它是系统与用户之间交互和信息交换的媒介&#xff0c;实现了信息内部形式与人类可接受形式之间的转换。用户界面设计作为人机信息传输媒介的作用&#xff0c;是计算机技术和…

数据结构与算法之计数排序

目录 前言 计数排序 定义 优缺点 策略 图解 代码实现 结束语 前言 今天是坚持写博客的第20天&#xff0c;时光飞逝&#xff0c;第二个10天即将过去&#xff0c;希望可以继续坚持&#xff0c;光明的未来也在未来等着我们。今天也恰逢高考&#xff0c;祝所有学子一帆风顺…