Qt中信号槽的概念和部分应用

这篇博客详细介绍了Qt中的信号槽机制,包括信号槽的概念、函数原型、参数传递和对应关系。通过实例展示了自带信号到自带槽、自带信号到自定义槽以及自定义信号的连接方式,同时探讨了如何通过信号槽传递参数,以及一对多和多对一的信号槽对应关系。
摘要由CSDN通过智能技术生成

目录

1. 信号槽的概念

2. 函数原型

2.1 自带信号 → 自带槽

2.2 自带信号 → 自定义槽

2.3 自定义信号

3. 参数传递

3.1 全局参数

3.2 信号槽传参

4. 对应关系

4.1 一对多

4.2 多对一


1. 信号槽的概念

如果让按钮能在用户点击后执行某个代码,就需要用到Qt中的信号槽机制。

信号槽是Qt基于C++语法上新增的特性,可以实现对象之间的通信,形成一定因果关系。

使用信号槽的对象需要具备两个条件:

  • 通信的对象必须继承自QObject
  • 类中要有Q_OBJECT宏

2. 函数原型

QObject类是所有Qt对象的基类,此类中有一个静态成员函数connect,用于连接信号槽之间的因果关系,函数原型如下:

参数1:发射者,通信的对象,此对象是信号槽触发的来源,例如:按钮对象(n.)

参数2:信号函数,使用SIGNAL()包裹,表示发射者触发的效果,例如:点击(v.)

参数3:接收者,通信对象,此对象是执行结果代码的主体(n.)

参数4:槽函数,使用SLOT()包裹,表示接收者要执行的函数(v.)

为了方便讲解各种场景下使用信号槽的不同方式,分别使用三种类型进行讲解:

  • 自带信号 → 自带槽
  • 自带信号 → 自定义槽
  • 自定义信号 → 槽函数

2.1 自带信号 → 自带槽

这是最简单的一种连接方式,因为信号函数和槽函数都在Qt中预设了,只需要通过connect函数“连线”即可。

【例子】点击按钮,关闭窗口。

分析:

参数1,按钮对象;

参数2,点击函数;

参数3,窗口对象;

参数4:关闭函数。

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QPushButton>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    QPushButton* btn;
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    resize(300,300);
    btn = new QPushButton("关闭",this);
    btn->move(100,100);

//    参数1,按钮对象 btn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值