嵌入式Qt【自定义信号槽】

qt

我们需要自定义给信号槽,首先要知道怎么才能实现信号槽模板

发送者->信号->接收者->槽函数

我们首先要创建自定义的发送者和接收者(创建两个类)

设置类名、类的基类(选择QObject)、文件名称、地址。

自定义信号

创建两个对应的类之后,我们知道信号属于发送者,槽函数属于接收者。我们在接收者类中,声明信号。

声明信号

在发送者(sender)类的.h文件中,声明信号函数。信号函数的关键字为“signals”,声明信号函数。

自定义槽

自定义信号后,需要自定义槽函数。

声明定义槽函数

在接收者(receiver)类的.h文件中,声明槽函数,信号函数的关键字为“slots”,槽函数关键字需要用“public、private、protected”三个关键声明。

信号函数可以不用定义,但是槽函数必须定义。可以右键函数名,选择“Refactor”在对应的.cpp文件中添加定义。

实例化自定义对象

创建之后,我们在mainwindow的.h文件中引用两个类的头文件,并声明类名,在MainWindow类中创建两个类的对象(常设置为私有(private))。

在mainwindow.cpp中实例化两个对象,在构造函数中进行。

连接信号槽

使用connect函数,connect(发送者,信号函数,接收者,槽函数)。

补充

一个信号可以连接多个槽。

connect(pushButton, SIGNAL(sendMessages), student, SLOT(comBackToClass));
connect(pushButton, SIGNAL(sendMessages), this, SLOT(hide)) ;

很好理解发射一枪可以打中多个目标,一个信号产生会引发多个槽函数。

多个信号可以连接一个槽

connect(pushButton, SIGNAL(sendMessages1), this, SLOT(hide));
connect(pushButton, SIGNAL(sendMessages2), this, SLOT(hide)) ;

同样,我们可以通过按钮1或者按钮2被按下时候执行关闭页面的操作,那么就是多个信号连接同一个槽

一个信号可以连接另外一个信号

connect(pushButton, SIGNAL(sendMessages2), this, SIGNAL(iconSizeChanged())) ;

相关文章

嵌入式Qt【UI编程】

我们设计UI界面的时候,可以使用Qt提供的UI可视化界面,通过推拽的方式实现页面设计;我们也可以不适用UI文件进行_**编程设计页面**_。 我们以**按键PushButton**为例: 创建按钮 打开帮助文档,查看按钮的使用说明。 我们如果使用QPushButton这个类,需要先添加头文件;文档下方为按钮的属性、按钮功能函数...。 声明实例化对象 在头文件下声明按钮类...

qt

嵌入式Qt【信号槽连接】

信号槽连接模型 生活中: 学校->通知->学生->上课 Qt中的信号与槽连接模型: 发送者->信号->接收者->槽 _这里的信号和槽都是函数_ 信号槽 我们通过使用Push Button(按钮)来讲解信号槽。 放置按钮 拖拽Push Button组件到界面,并修改按钮大小,文字内容和字体; 连接信号 我们可以把按钮当作一个发送者,将界面当作一个接收者(Mainwin...

qt

在Linux(Ubuntu)上安装Qt环境

引言 Qt网站提供了不同发行版本的平台支持情况,比如我们查看的信息。 _可以看到Qt 5.15版本支持的Ubuntu版本为20、18_ 本人的Ubuntu一直使用的是18版本,所以选择安装了Qt5.15 LTS,所以本文将讨论如何在Ubuntu18版本上安装Qt 5.15 LTS版本。_(这里的LTS为长期支持版本)_ **PS:如果想快速安装就选择离线版本** 注册 Qt安...

qt