Qt自定义信号、带参数的信号、lambda表达式和信号的使用

embedded/2024/9/24 20:26:06/

整个部分知识通过一个跳转窗口的项目来体现
第一个页面

#include "test.h"
#include <qdebug.h>
test::test(QWidget *parent): QDialog(parent)
{ui.setupUi(this);/** &s 信号发出者* &subWidget::mySignals 处理的信号,  &发送者类名::槽函数* this信号接收者* &test::onSubcliked 信号处理函数、槽函数   &接收者类名::槽函数*///函数指针//  void(subWidget:: * mySignals)() = &subWidget::mySignals;// connect(&s,mySignals,this,&test::onSubcliked);//  void(subWidget:: *mySignals1)(int,QString) = &subWidget::mySignals;//  connect(&s, mySignals1, this, &test::displsy);//槽函数必须有slots关键字修饰//this :类中所有成员以值传递方式//&:把外部所有局部变量,引用符号connect(&s, SIGNAL(mySignals()), this, SLOT(onSubcliked()));connect(&s, SIGNAL(mySignals(int,QString)), this, SLOT(displsy(int, QString)));connect(ui.pushButton, &QPushButton::clicked, this, &test::on_pushButton_cliked);//lambda表达式 匿名函数对象//配合信号使用方便connect(ui.pushButton_3, &QPushButton::clicked, // = :把外部所有的局部变量、类中所有成员以值传递方式//mutable可变的    [=]() mutable[=](bool isCheck){ui.pushButton_3->setText("123");qDebug() << "dadasa";qDebug() << isCheck;});
}test::~test()
{}void test::on_pushButton_cliked()
{this->hide();s.show();
}void test::onSubcliked()
{this->show();s.hide();
}void test::displsy(int num, QString s)
{qDebug() << num << s;
}

.h文件

#pragma once#include <QtWidgets/QDialog>
#include "ui_test.h"
#include "subWidget.h"class test : public QDialog
{Q_OBJECTpublic:test(QWidget *parent = nullptr);~test();void on_pushButton_cliked();//槽函数private slots:void onSubcliked();void displsy(int num, QString s);
private:Ui::testClass ui;subWidget s;
};

第二个页面

#include "subWidget.h"subWidget::subWidget(QWidget *parent): QDialog(parent)
{ui.setupUi(this);//将按钮和方法链接connect(ui.pushButton,&QPushButton::clicked,this,&subWidget::on_pushButton_cliked);connect(ui.pushButton_2, &QPushButton::clicked, this, &subWidget::on_pushButton2_cliked);
}subWidget::~subWidget()
{}void subWidget::on_pushButton_cliked()
{emit mySignals();
}void subWidget::on_pushButton2_cliked()
{emit mySignals(1,"发发大");
}

.h文件

#pragma once#include <QDialog>
#include "ui_subWidget.h"class subWidget : public QDialog
{Q_OBJECTpublic:subWidget(QWidget *parent = nullptr);~subWidget();void on_pushButton_cliked();void on_pushButton2_cliked();
signals:/** 信号必须有signals关键字声明* 信号灭有返回值,但是可以有参数* 信号就是函数的声明,只需声明,无需定义* 使用:emit mySignals*/void mySignals();void mySignals(int num, QString s);private:Ui::subWidgetClass ui;
};

在这里插入图片描述
跳转到子页面
在这里插入图片描述
点击显示内容 就会打印
在这里插入图片描述
点击返回主页面
在这里插入图片描述
点击lambda表达式
在这里插入图片描述


http://www.ppmy.cn/embedded/114700.html

相关文章

UE5——笔刷Brush工具

在游戏开发中&#xff0c;特别是使用某些游戏引擎如Unreal Engine时&#xff0c;“笔刷”&#xff08;Brush&#xff09;是一种特殊的Actor&#xff08;游戏世界中的一个实体&#xff09;&#xff0c;用于描述3D几何形状&#xff0c;如立方体、球体或其他基本几何体。笔刷主要用…

在系统总线的数据线上,不可能传输的是()。

在系统总线的数据线上&#xff0c;不可能传输的是 A&#xff0e;指令 B&#xff0e;操作数 C&#xff0e;握手&#xff08;应答&#xff09;信号 D&#xff0e;中断类型号 答案&#xff1a;在系统总线的数据线上&#xff0c;不可能传输的是&#xff1a; C. 握手&#xff08;应…

梧桐数据库(WuTongDB):postgresql 12的CBO(Cost-Based Optimizer)优化器

PostgreSQL 12 的 CBO&#xff08;基于代价的优化器&#xff0c;Cost-Based Optimizer&#xff09;是其查询优化的核心组件&#xff0c;用于生成高效的查询执行计划。PostgreSQL 的 CBO 通过估算各种执行路径的代价&#xff0c;选择最优的路径来执行 SQL 查询。 PostgreSQL 12…

Ubuntu 22.04 LTS 上安装 Docker

单台机器安装docker环境&#xff0c;是为了后面安装open-webui&#xff0c;环境安装比较简单&#xff0c;没有难点&#xff0c;但一定要按步骤走&#xff0c;否则还是会遇到一些问题的。 第 1 步&#xff1a;更新软件包并安装必要软件 运行以下命令&#xff0c;更新软件包索引…

前后端分离项目--下载功能

文章目录 不使用代理服务器blobblob构造函数通过FormData对象的getBlob方法创建Blob对象将Blob对象转换成UR 使用代理服务器 前后端分离项目中下载与其他接口的使用不同&#xff0c;一般下载不走node&#xff0c;不通过代理服务器&#xff0c;而是直接在前台发送请求&#xff0…

基于SpringBoot+Vue的健身房管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

【24华为杯数模研赛赛题思路已出】国赛A题思路丨附参考代码丨免费分享

2024年华为杯研赛A题解题思路 A题 风电场有功功率优化分配 问题一&#xff1a;风机主轴及塔架疲劳损伤程度量化指标计算低复杂度模型 实际应用中&#xff0c;载荷&#xff08;指主轴扭矩和塔架推力&#xff09;数据随机性很强&#xff0c;且周期特征不标准&#xff0c;波峰波…

WPF TextBox 控件文本水平垂直居中

WPF TextBox 控件文本水平垂直居中 水平居中 HorizontalContentAlignment"Center"垂直居中 VerticalContentAlignment"Center"