QT自定义信号和槽

信号和槽

    • 介绍
    • 实现
      • 创建文件
      • 对teacher的h和cpp文件进行处理
      • 对student的h和cpp文件进行处理
      • 对widget的h和cpp文件进行处理

介绍

Qt中的信号和槽是一种强大的机制,用于处理对象之间的通信。它们是Qt框架中实现事件驱动编程的核心部分。
信号(Signal):信号是当某个特定事件发生时由一个对象发出的。信号本质上就是一个函数调用,但不同于普通的函数调用,它拥有一些特殊属性。比如信号可以异步发送,也就是说发送者和接收者可以在不同的线程中运行。此外,信号可以带有参数,这些参数可以在信号发送时被传递给接收者。

槽(Slot):槽是接收并响应信号的函数。槽函数可以是任何普通的成员函数,只要它被声明为信号的接收者。当一个信号被发射时,与之相关联的槽函数将被自动调用。

在Qt中,要建立信号和槽的连接,需要使用connect函数。例如:

connect(sender, SIGNAL(signalName()), receiver, SLOT(slotName()));

这里,sender是信号的发送者,signalName()是信号的名称,receiver是接收者对象,slotName()是槽函数的名称。

实现

举个例子,铃声响起,老师说放学,然后学生就回家。这里老师说放学为信号,学生为槽接受然后做出回家的动作。

创建文件

先在头文件里面添加老师和学生两个类
QT自定义信号和槽_第1张图片
选择第一个同时创建.h和.cpp文件
QT自定义信号和槽_第2张图片
QT自定义信号和槽_第3张图片
结果如下图所示
QT自定义信号和槽_第4张图片

对teacher的h和cpp文件进行处理

对信号的添加要写在signals下面,只需要声明,不需要实现,返回void,可以带参数和重载。所以不用在cpp文件内进行处理
QT自定义信号和槽_第5张图片

对student的h和cpp文件进行处理

对槽函数的添加要写在public下面或者全局函数,需要声明和实现,返回void,可以带参数和重载。
QT自定义信号和槽_第6张图片
QT自定义信号和槽_第7张图片

对widget的h和cpp文件进行处理

把teache和student的头文件引入进来
QT自定义信号和槽_第8张图片

QT自定义信号和槽_第9张图片
至此,就完成了一个简单的例子。运行,然后在应用程序输出可以看到文字输出
QT自定义信号和槽_第10张图片

你可能感兴趣的:(qt,开发语言)