学习C++、QT---20(C++的常用的4种信号与槽、自定义信号与槽的讲解)

每日一言

        相信自己,你比想象中更接近成功,继续勇往直前吧!

那么我们开始用这4种方法进行信号与槽的通信

第一种信号与槽的绑定方式

我们将按键右键后转到槽

会自动跳转到这个widget.h文件里面并自动生成了定义,我们要记住我们这个按钮叫做这个UIbtn,所以生成的叫做这个on_UIbtn_clicked();切记,我们这个函数名字不能自己去修改,因为这个函数的名字与我们的按钮对象的名字相同,这个是一种命名格式on_UIbtn_clicked();(on_对象名_信号名称)

这个只是声明,没有实现,所以我们也需要进行实现,右键这个声明里面有个Refactor重构,里面有个在widget.cpp添加定义,那么我们就可以实现功能了,比如以下的图

所以我们测试一下,点击这个按钮,那么就会实现弹出信息

没有问题

第二种信号与槽的绑定方式

我们要切记,这些信号与槽进行连接的代码需要在构造函数进行,实现,

这个代码是什么意思呢,ui的Connectbtn这个对象,发送的信号为clicked(),接受方为this,也就是这个窗口,SLOT里面就是接收方设置的槽函数,这个槽函数的话我们需要自己定义出来

在widget里面声明函数,自己复制过来,名字需要与我们的格式相匹配

然后也是进行实现,实现的话也是在Widget.cpp文件

然后我们返回也是可以的

第三种信号与槽的绑定方式

第三个种方式是lambda的方式,那么这个一样的方法,但是就是我们不需要进行槽函数的定义和实现了,因为我们是匿名函数嘛,但是要记住一下写法,

第四种信号与槽的绑定方式

第四种方式用函数指针的写法,我相信看语法,也会写的出来,槽函数需要自己定义和实现

自定义信号与槽

这个就厉害了,最终形态了,可以自己定义信号与自定义槽

怎么搞

首先,信号与槽也是需要用QObject: :connect 进行连接,我们先讲无参的,我们这边根据写出来的信号函数和槽函数,去widget.h去声明

一定要记住自定义信号需要写上signals:作为前缀,自定义槽函数需要public slots:这样来写,硬记都要记住,这个是没有办法的

然后我们同样也是将这个slot槽函数进行实现,右键在widget.cpp中添加实现,还有我们的信号函数是不需要实现的

我们的这个信号与槽绑定之后,我们还需要进行激活信号,也就是发送信号,那么这边有个关键词是emit  ,我们的emit 作为信号的前缀就是触发信号的作用,意思就是我们允许这个程序,后代码执行到emit这一条代码的时候就会触发信号,那么槽函数就会被调用了

那么我们运行后就会看到返回的信息了,如果看不到怎么办,而且代码也没问题怎么办??那我们就重新构建一下项目,这样就好了

那么这边还会看到这个qDebug这个东东

在 Qt 开发中,qDebug() 是一个非常重要的调试工具,它的作用类似于 C++ 中的 std::cout,但专为 Qt 环境优化。所以我们以后都要用这个qDebug进行输出数据,因为qDebug对调试Qt程序有很好的作用,后面可以用到了再详细介绍

我们想要传参数进去,怎么传

那么这边我们需要注意的点是这个信号与槽绑定的这个语句中不是填int value 了而是填int,这个要记住

旧语法(字符串)

SIGNAL(mySignal(int))

- 只写参数类型
- 运行时检查类型匹配
- 兼容性好(Qt 4/5)

新语法(函数指针)

&SenderClass::mySignal

- 写完整函数签名
- 编译时检查类型匹配
- 更安全,推荐使用

当前的代码使用的是旧语法,所以只需要填 int这个参数类型就好了

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

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

相关文章

Anolis OS 23 架构支持家族新成员:Anolis OS 23.3 版本及 RISC-V 预览版发布

自 Anolis OS 23 版本发布之始,龙蜥社区就一直致力于探索同源异构的发行版能力,从 Anolis OS 23.1 版本支持龙芯架构同源异构开始,社区就在持续不断地寻找更多的异构可能性。 RISC-V 作为开放、模块化、可扩展的指令集架构,正成为…

4万亿英伟达,凭什么?

CUDA正是英伟达所有神话的起点。它不是一个产品,而是一个生态系统。当越多的开发者使用CUDA,就会催生越多的基于CUDA的应用程序和框架;这些杀手级应用又会吸引更多的用户和开发者投身于CUDA生态。这个正向飞轮一旦转动起来,其产生…

Unity3D iOS闪退问题解决方案

前言 在Unity3D开发中解决iOS闪退问题需要系统性排查,以下是关键步骤和解决方案: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀! 1. 获取崩溃日志(关键第一步&#xff…

嵌入式八股文之 GPIO

1. GPIO 的基本概念(1) 什么是 GPIO?GPIO 的中文意思是通用输入输出端口(General Purpose Input/Output),是嵌入式系统中可编程控制的通用引脚,可通过软件配置为输入或输出模式。(背诵)(2) 它的…

Umi-OCR 的 Docker安装(win制作镜像,Linux(Ubuntu Server 22.04)离线部署)

前置博客:Ubuntu-Server 22.04.4 详细安装图文教程 wget命令在windows终端下不能使用的原因及解决办法 在 Ubuntu 22.04 LTS 上离线安装 Docker 手把手教你在Win11下安装docker Umi-OCR 安装docker时报错:workstation服务启动报错。错误1075&#…

力扣242.有效的字母异位词

给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的 字母异位词。示例 1:输入: s "anagram", t "nagaram" 输出: true示例 2:输入: s "rat", t "car" 输出: false提示:1 < s.length, t.length < 5 * 104s…

基于Springboot+UniApp+Ai实现模拟面试小工具二:后端项目搭建

本节介绍本项目后端项目的开发工具及基础项目的搭建&#xff0c;包括开发工具介绍及后端项目的创建和依赖框架的引入及对应配置。 源码下载&#xff1a; 点击下载 讲解视频&#xff1a; UniappSpringbootKimi实现模拟面试小程序-Springboot项目创建一&#xff0e;开发工具 1.…

Linux711 Mysql

模版 root192.168.235.130s password:┌──────────────────────────────────────────────────────────────────────┐│ • MobaXterm Personal Edition v23.2 • ││…

QT 秘钥生成工具

该项目是注册机和验证机项目&#xff0c;分别是密钥生成工具&#xff0c;和密钥验证demo,可以识别电脑唯一标识码。#include "frmmain.h" #include "ui_frmmain.h" #include "qmessagebox.h" #include "qfile.h" #pragma execution_ch…

PyTorch神经网络训练全流程详解:从线性层到参数优化

目录 一、神经网络训练的核心组件 二、代码逐行解析与知识点 三、核心组件详解 3.1 线性层(nn.Linear) 3.2 损失函数(nn.MSELoss) 3.3 优化器(optim.SGD) 四、训练流程详解 五、实际应用建议 六、完整训练循环示例 七、总结 在深度学习实践中&#xff0c;理解神经网络…

从代码学习深度学习 - 针对序列级和词元级应用微调BERT PyTorch版

文章目录 前言针对序列级和词元级应用微调BERT单文本分类文本对分类或回归文本标注问答总结前言 在自然语言处理(NLP)的广阔天地里,预训练模型(Pre-trained Models)的出现无疑是一场革命。它们如同站在巨人肩膀上的探索者,使得我们能够利用在大规模文本语料上学到的丰富…

学习笔记丨卷积神经网络(CNN):原理剖析与多领域Github应用

本文深入剖析了卷积神经网络&#xff08;CNN&#xff09;的核心原理&#xff0c;并探讨其在计算机视觉、图像处理及信号处理等领域的广泛应用。下面就是本篇博客的全部内容&#xff01;&#xff08;内附相关GitHub数据库链接&#xff09; 目录 一、什么是CNN&#xff1f; 二、…

cnpm exec v.s. npx

1. 核心定位与设计目标 npx (Node Package Executor): 定位: Node.js 内置工具&#xff08;npm 5.2 起捆绑&#xff09;&#xff0c;核心目标是便捷地执行本地或远程 npm 包中的命令&#xff0c;无需全局安装。核心价值: 避免全局污染&#xff1a; 临时使用某个 CLI 工具&#…

我花10个小时,写出了小白也能看懂的数仓搭建方案

目录 一、什么是数据仓库 1.面向主题 2.集成 3.相对稳定 4.反映历史变化 二、数仓搭建的优势 1.性能 2.成本 3.效率 4.质量 三、数仓搭建要考虑的角度 1.需求 2.技术路径 3.数据路径 4.BI应用路径 四、如何进行数仓搭建 1.ODS层 2.DW层 3.DM层 五、写在最后…

OBB旋转框检测配置与训练全流程(基于 DOTA8 数据集)

&#x1f680; YOLO交通标志识别实战&#xff08;五&#xff09;&#xff1a;OBB旋转框检测配置与训练全流程&#xff08;基于 DOTA8 数据集&#xff09; 在专栏前面四篇里&#xff0c;我们完成了&#xff1a; ✅ Kaggle交通标志数据集下载并重组标准YOLO格式 ✅ 训练/验证集拆…

uniapp制作一个视频播放页面

1.产品展示2.页面功能(1)点击上方按钮实现页面跳转&#xff1b;(2)点击相关视频实现视频播放。3.uniapp代码<template><view class"container"><!-- 顶部分类文字 --><view class"categories"><navigator class"category-…

8.卷积神经网络基础

8.1 卷积核计算 import torch from torch import nn import matplotlib.pyplot as plt def corr2d(X,k):#计算二维互相关运算h,wk.shape#卷积核的长和宽Ytorch.zeros((X.shape[0]-h1,X.shape[1]-w1))#创建(X-H1,X-W1)的全零矩阵for i in range(Y.shape[0]):for j in range(Y.s…

【每天一个知识点】子空间聚类(Subspace Clustering)

“子空间聚类&#xff08;Subspace Clustering&#xff09;”是一种面向高维数据分析的聚类方法&#xff0c;它通过在数据的低维子空间中寻找簇结构&#xff0c;解决传统聚类在高维空间中“维度诅咒”带来的问题。子空间聚类简介在高维数据分析任务中&#xff0c;如基因表达、图…

《汇编语言:基于X86处理器》第7章 整数运算(2)

本章将介绍汇编语言最大的优势之一:基本的二进制移位和循环移位技术。实际上&#xff0c;位操作是计算机图形学、数据加密和硬件控制的固有部分。实现位操作的指令是功能强大的工具&#xff0c;但是高级语言只能实现其中的一部分&#xff0c;并且由于高级语言要求与平台无关&am…

JVM故障处理与类加载全解析

1、故障处理工具基础故障处理工具jps&#xff1a;可以列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执行主类&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;名称以及这些进程的本地虚拟机唯一ID&#xff08;LVMID&#xff0c;Local Virtual Machine I…