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

QT----自定义信号和槽

第二天

2.1自定义信号和槽

新建一个Qtclass

在这里插入图片描述

自定义信号:返回值是void ,只需要声明,不需要实现,可以有参数,可以重载

自定义槽:返回值void ,需要声明,也需要实现,可以有参数,可以发生重载

首先新建学生和老师的类。在老师的头文件中添加自定义信号,将代码写在signals:下来实现自定义信号(只需要声明不需要实现)

class Teacher  : public QObject
{Q_OBJECT
public:Teacher(QObject *parent);~Teacher();
//自定义信号写到signals下
//返回值是void ,只需要声明,不需要实现
//可以有参数,可以重载
signals:void hungry();
};

在学生类里定义槽返回值void ,需要声明,也需要实现可以有参数,可以发生重载。

class Student  : public QObject
{
public:Student(QObject *parent);~Student();
public slots://返回值void ,需要声明,也需要实现//可以有参数,可以发生重载void treat();
};void Student::treat()
{qDebug("请老师吃饭");
}

现在weidet头文件里新建老师和学生的指针,在到cpp里把他们实例化绑定到父类加入对象树,并且使用connect进行连接。光有连接还不行(=必须要先连接在调用=),需要调用的时机,使用emit来定义触发的时机。写完后就能在输出里看到打印了这段文字。

#include <QtWidgets/QWidget>
#include "ui_widget.h"
#include "Teacher.h"
#include "Student.h"class widget : public QWidget
{Q_OBJECT
public:widget(QWidget *parent = nullptr);~widget();
private:Ui::widgetClass ui;//先申明两个指针Teacher* te;Student* st;//声明调用函数void classisover();
};#include "widget.h"widget::widget(QWidget *parent): QWidget(parent)
{ui.setupUi(this);//创建一个老师对象,右边的this是设置父类加入对象树this->te = new Teacher(this);//创建一个学生对象this->st = new Student(this);//搭建连接,要先连接在传递信号connect(te,&Teacher::hungry,st,&Student::treat);classisover();
}widget::~widget()
{}void widget::classisover()
{//下课函数,调用后出发老师饿了的信号emit te->hungry();
}

2.2 重载信号和槽

在老师头文件重载hungry函数为void hungry(QString foodname)信号只需要声明不需要实现。

在学生头文件重载 ​treat​ 函数,并实现食物名。后边加toUtf8().data()是因为不加的话字符串输出有引号

void Student::treat(QString foodname)
{//QString -> char *先砖成QByteArray(.toutf8())再转char * (.data())qDebug()<<"请老师吃饭"<<foodname.toUtf8().data();
}

此时需要修改调用函数加入食物名称,connect找不到该连接的函数,应为没有指定哪个重载。需要用下边的方式来使用函数指针指向你想连接的函数重载

//连接到带参数的信号和槽
//函数指针指向函数地址
void (Teacher:: *teacherSignal)(QString) = &Teacher::hungry;
void (Student:: *studentSlot)(QString) = &Student::treat;connect(te, teacherSignal, st, studentSlot);
classisover();void widget::classisover()
{//下课函数,调用后出发老师饿了的信号emit te->hungry("gongbaojiding");
}

2.3 信号连接信号

1、信号是可以连接信号

2、一个信号可以连接多个槽函数

3、多个信号可以连接同一个槽函数

4、信号和槽函数的参数必须类型——对应

5、信号和槽的参数个数﹑是不是要一致?信号的参数个数可以多余槽函数的参数个数(按钮的点击是bool一个参数,所以只能用空的函数重载去连接信号)

还可以使用按钮来触发这个信号,点击就会触发

//点击一个按钮下课
QPushButton* btn = new QPushButton("下课",this);
this->resize(600,400);//点击按钮,下课
connect(btn,&QPushButton::clicked,this,&widget::classisover);

使用信号连接信号,无参信号和槽连接,相当于点击信号触发老师信号,老师信号又触发学生请客的信号,三者关联起来了

在这里插入图片描述

//无参信号和槽连接
//连接到带参数的信号和槽
//函数指针指向函数地址
void (Teacher:: * teacherSignal)(void) = &Teacher::hungry;
void (Student:: * studentSlot)(void) = &Student::treat;
connect(te, teacherSignal, st, studentSlot);//信号连接信号
connect(btn, &QPushButton::clicked, te, teacherSignal);

2.4 lambda表达式

5.4版本之前要使用Lambda,需要在.pro文件处添加这么一行代码CONFIG += C++11\

相关文章:

QT----自定义信号和槽

第二天 2.1自定义信号和槽 新建一个Qtclass 自定义信号&#xff1a;返回值是void &#xff0c;只需要声明&#xff0c;不需要实现&#xff0c;可以有参数&#xff0c;可以重载 自定义槽&#xff1a;返回值void &#xff0c;需要声明&#xff0c;也需要实现&#xff0c;可以有…...

【Vue第4章】Vue中的ajax_Vue2

目录 4.1 解决开发环境Ajax跨域问题 4.1.1 解决跨域的三种方法 4.1.2 使用代理服务器 4.1.3 笔记与代码 4.1.3.1 笔记 4.1.3.2 19_src_配置代理服务器 4.2 github用户搜索案例 4.2.1 效果 4.2.2 接口地址 4.2.3 笔记与代码 4.2.3.1 20_src_github搜索案例 4.3 vue项…...

力扣labuladong——一刷day72

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣109. 有序链表转换二叉搜索树二、力扣1382. 将二叉搜索树变平衡 前言 二叉树的递归分为「遍历」和「分解问题」两种思维模式&#xff0c;这道题需要用到…...

Leetcode—509.斐波那契数【简单】

2023每日刷题&#xff08;五十七&#xff09; Leetcode—509.斐波那契数 实现代码 int fib(int n){if(n 0) {return 0;}if(n 1) {return 1;}return fib(n-1) fib(n-2); }运行结果 之后我会持续更新&#xff0c;如果喜欢我的文章&#xff0c;请记得一键三连哦&#xff0c;点…...

山峰个数 - 华为OD统一考试

OD统一考试 分值: 100分 题解: Java / Python / C++ 题目描述 给定一个数组,数组中的每个元素代表该位置的海拔高度。0表示平地,>=1时表示属于某个山峰,山峰的定义为当某个位置的左右海拔均小于自己的海拔时,该位置为山峰。数组起始位置计算时可只满足一边的条件。 …...

38、池化的特征不变性

池化操作有一个比较独特的特性&#xff0c;叫作特征不变性。 很多文章中是这么描述池化的特征不变性的&#xff1a;池化操作的特征不变性&#xff0c;可以提高模型对图片平移、缩放和旋转等变换的鲁棒性。 之前看到这句话的时候&#xff0c;似懂非懂。后来查了一些资料&#…...

051:vue项目webpack打包后查看各个文件大小

第051个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…...

JVM调优:参数(学习笔记)

一、jvm的运行参数 标准参数 -help、-version、-D参数 jvm的标准参数&#xff0c;一般都是很稳定的&#xff0c;在未来的JVM版本中不会改变&#xff0c;可以使用java -help 检索出所有的标准参数。 通过以下命令查看&#xff1a; 命令&#xff1a;java -help 可以看到我们经常…...

MVC Gantt Wrapper:RadiantQ jQuery

The RadiantQ jQuery Gantt Package includes fully functional native MVC Wrappers that let you declaratively and seamlessly configure the Gantt component within your aspx or cshtm pages just like any other MVC extensions. 如果您还没有准备好转向完全基于客户端…...

2019年第八届数学建模国际赛小美赛C题预测通过拥堵路段所需的时间解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 C题 预测通过拥堵路段所需的时间 原题再现&#xff1a; 在导航软件中&#xff0c;行程时间的估计往往是一个重要的功能。现有的导航软件往往通过出租车或安装了该软件的车辆获取实时GPS数据来确定当前的路况。在交通拥堵严重的情况下&#…...

天干地支。

古代中国使用天干地支来记录当前的年份 天干一共有十个&#xff0c;分别为: 甲 (ia) 、乙(yi)、丙(bing) 、丁 (ding) 、成 (wu) 、己(ir) 、庚(geng)辛(xin)、王(ren)、类 (gui)。 分别为:子(zi)、丑 (chu)、寅地支一共有十二个&#xff0c;(yin)、卵 (mao)、辰 (chen) 、已(s…...

RabbitMQ插件详解:rabbitmq_web_stomp【RabbitMQ 六】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 《RabbitMQ Web STOMP&#xff1a;打破界限的消息传递之舞》 前言STOMP协议简介STOMP&#xff08;Simple Text Oriented Messaging Protocol&#xff09;协议简介STOMP与WebSocket的关系 WebSocket和R…...

路由器的转换原理--ENSP实验

目录 一、路由器的工作原理 二、路由表的形成 1、直连路由 2、非直连路由 2.1静态路由 2.2动态路由 三、静态路由和默认路由 1、静态路由 1.1静态路由的缺点 1.2路由的配置--结合ensp实验 2、默认路由--特殊的静态路由 2.1概念 2.2格式 2.3默认路由的配置--ens…...

世界5G大会

会议名称:世界 5G 大会 时间:2023 年 12 月 5 日-12 月 8 日 地点:河南郑州 一、会议简介 世界 5G 大会,是由国务院批准,国家发展改革委、科技部、工 信部与地方政府共同主办,未来移动通信论坛联合属地主管厅局联合 承办,邀请全球友好伙伴共同打造的全球首个 5G 领域…...

FFmpeg-基础组件-AVFrame

本章主要介绍FFmpeg基础组件AVFrame. 文章目录 1.结构体成员2.成员函数AVFrame Host内存的获取 av_frame_get_bufferAVFrame device内存获取av_hwframe_get_buffer&#xff08;&#xff09; 1.结构体成员 我们把所有的代码先粘贴上来&#xff0c;在后边一个一个解释。 typede…...

Vue 组件传参 emit

emit 属性&#xff1a;用于创建自定义事件&#xff0c;接收子组件传递过来的数据。 注意&#xff1a;如果自定义事件的名称&#xff0c;和原生事件的名称一样&#xff0c;那么只会触发自定义事件。 setup 语法糖写法请见&#xff1a;《Vue3 子传父 组件传参 defineEmits》 语…...

Makefile基本指令

语法规则 目标 ... : 依赖 ...命令1命令2. . .1、目标即要生成的文件。如果目标文件的更新时间晚于依赖文件更新时间&#xff0c;则说明依赖文件没有改动&#xff0c;目标文件不需要重新编译。否则会进行重新编译并更新目标文件。 2、默认情况下Makefile的第一个目标为终极目…...

爬取图片python代码

在百度上爬取图片 pic_baidu.py import re import requests from urllib import error from bs4 import BeautifulSoup import os num 0 numPicture 0 file List []def Find(url, A):global Listprint(正在检测图片总数&#xff0c;请稍等.....)t 0i 1s 0while t <…...

Android通过listview实现输入框自定义提示栏(代替AutoCompleteTextView自动完成文本框)

效果图 背景 本人因为一些需求初次接触android&#xff0c;需要实现一个类似android自带的AutoCompleteTextView&#xff08;自动完成文本框&#xff09;&#xff0c;但和其不同的是通过后端接口直接筛选数据&#xff08;自己的分词处理规则&#xff09;&#xff0c;然后返回前…...

DA-AD试验

/********************************************************************************** * * * 1.通过本例程了解并掌握AD-DA转换芯片的基本原理和使用 * * …...

硬核手搓解析!进程-内核分析:命令行参数及环境变量,重构main()

目录 命令行参数与环境变量 命令行参数 vim下的main() 环境变量 环境变量的应用举例 查询环境变量 全部查询 针对名称查询&#xff08;常用的方式&#xff09; 环境变量的更改 配置环境变量 进程&#xff1a;命令行参数及环境变量的关系 结论 获取环境变量 ①get…...

喷墨设备怎么选?2026年UV喷码技术深度评测与选购指南

面对市场上琳琅满目的工业喷墨设备&#xff0c;尤其是UV喷墨设备厂家&#xff0c;采购者如何做出明智选择&#xff1f;本文将从技术前沿、核心参数与行业应用三大维度&#xff0c;为您提供一份详尽的评测与选购指南&#xff0c;并深度剖析以中防uv喷码机为代表的专业制造商如何…...

工业控制、通信设备、医疗仪器:MX30LF2G18AC-TI的嵌入式存储应用版图

MX30LF2G18AC-TI&#xff1a;2Gb SLC NAND闪存的工业级存储方案在工业控制、嵌入式系统以及通信设备等领域&#xff0c;非易失性存储器的选择直接影响设备的数据完整性、运行稳定性及长期供货保障。MX30LF2G18AC-TI是旺宏电子推出的一款2Gb SLC NAND闪存芯片&#xff0c;采用成…...

SwiftUI原生集成ChatGPT API:从架构设计到流式响应实战

1. 项目概述&#xff1a;一个原生的Swift版ChatGPT客户端最近在折腾iOS和macOS上的AI应用开发&#xff0c;发现了一个挺有意思的开源项目&#xff1a;alfianlosari/ChatGPTSwift。简单来说&#xff0c;这是一个用纯SwiftUI构建的、直接调用OpenAI官方API的ChatGPT客户端。它不是…...

深入解析Baichuan-7B:从GPT架构到LoRA微调的实践指南

1. 项目概述&#xff1a;从开源大模型到“百川”入海 最近在和朋友聊起国内大模型的开源生态时&#xff0c;总绕不开一个名字——“百川”。我说的不是地理上的河流&#xff0c;而是由百川智能公司开源的Baichuan系列大语言模型。今天想重点聊聊的&#xff0c;是它的起点&#…...

zotero-pdf-translate自动翻译失效:5步快速诊断与修复指南

zotero-pdf-translate自动翻译失效&#xff1a;5步快速诊断与修复指南 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mirr…...

【Prometheus】如何使用 `promtool` 工具来检查目标端点的指标是否符合规范?

使用 promtool 进行指标合规性验证:从开发到上线的标准化质量门禁 用户问题原文:“如何使用 promtool 工具来检查目标端点的指标是否符合规范?” 在超大规模生产环境中,Prometheus 监控着成千上万个由不同团队、使用不同语言(Java/Spring, Go, Python)开发的服务。一个不…...

5分钟掌握Nexus Mods App:告别模组管理烦恼的终极解决方案

5分钟掌握Nexus Mods App&#xff1a;告别模组管理烦恼的终极解决方案 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App 还在为游戏模组冲突、依赖缺失而烦恼吗&#xff1f;N…...

2026快消日化CRM选型指南,这几点一定注意

针对洗护日化行业SKU繁杂、全渠道&#xff08;KA/CS/母婴&#xff09;管理难的技术痛点&#xff0c;企业在CRM选型时必须关注SFA执行、DMS协同及ERP深度集成的能力。我们在日化赛道&#xff0c;通过勤策SFAAI Agent方案&#xff0c;帮客户把陈列识别准确率提升至98%&#xff0c…...

构建飞书双向集成中继器:Node.js实现企业内外系统自动化连接

1. 项目概述&#xff1a;一个连接飞书与外部服务的“中继器” 最近在做一个挺有意思的小项目&#xff0c;叫 gainly-playreading188/clawrelay-feishu-server 。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;我来拆解一下。 clawrelay 这个词组&#xff0c;可以…...