C++Qt——信号与槽

本文详细介绍了Qt中的信号与槽机制,包括信号的声明、槽的定义,以及如何通过connect函数、UI文件自动连接、lambda表达式和函数指针等方式实现信号与槽的连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt信号与槽——建立信号与槽

平常我们所见到的界面,鼠标点击一下指定的按钮,就会产生一定的效果。C++ Qt框架中的信号与槽机制是Qt进行对象间通信的一种方法,非常核心且有别于传统的回调函数或者消息传递机制。通过信号与槽,Qt能够在不同的对象之间安全地传递信息,而且这种机制是类型安全的。
信号 (Signals):信号是由对象发出的消息,告知程序发生了某个事件(如用户点击按钮)。信号仅有声明,没有定义,它们被定义在QObject或其任何子类中。当特定事件发生时,相应的信号就会被发射(emit)。例如,QPushButton类有一个clicked()信号,当用户点击按钮时,这个信号被发射。
槽 (Slots):”槽是用来响应信号的函数。当与信号相连的槽收到信号时,它就会被调用。和信号一样,槽也是QObject或其子类的成员。槽可以是普通的成员函数,也可以是lambda表达式或其他可调用的对象。
信号与槽的连接 (Connecting Signals and Slots):要使信号和槽一起工作,需要将它们连接起来。Qt提供了QObject::connect函数(静态函数)来实现这一点。当连接建立后,如果信号被发射,对应的槽就会被调用。
在这里插入图片描述

一、 简单界面

方法一 :演示新建一个QT项目。在ui设计界面,拖动一个button,下面有发送者、信号、接受者、槽,+ - 表示添加和删除。手动设置,如下的功能是点击窗口的按钮,窗口自动关闭。
在这里插入图片描述
方法二:了解即可。在下图的配置框中设置即可。

在这里插入图片描述

二、复杂事件设置信号与槽

方法一:自动连接(使用UI文件),通过命名约定自动连接信号与槽。

拖拽一个按钮,右键选择“转到槽”,选择相应的信号。
在这里插入图片描述
然后就可以在相应的函数进行操作。
在这里插入图片描述
运行点击按钮,生成结果。
在这里插入图片描述

void Widget::on_pushButton_clicked()
{
   
    std::cout << "方法一btnuiClicked" << std::endl;
}
//on_pushButton_clicked()命名的槽会自动连接到相应的信号。
//原型是on_objectName_signalName

方法二:使用QObject::connect

拖拽一个按钮
在这里插入图片描述

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
    ui->setupUi(this);
    //方法二:在构造函数中进行信号与槽的绑定           这里信号是个宏
    //QObject::connect(const QObject *sender, SIGNAL(signal()), const QObject *receiver, SLOT(slot()))   这里信号是个宏

    QObject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值