QT标准信号槽

本文介绍了Qt中的信号槽机制,它是观察者模式的实现,通过按钮点击和ComboBox事件处理为例,展示了如何利用QObject::connect函数连接信号和槽函数。了解如何响应和处理信号是GUI编程的核心内容。
摘要由CSDN通过智能技术生成

所谓信号槽,实际就是观察者模式 (发布 - 订阅模式)。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。

信号(Signal)
信号(Signal) 就是在特定情况下被发射的事件, 例如 按钮最常见的信号就是鼠标
单击时发射的 clicked() 信号, 一个 ComboBox 最常见的信号是选择的列表项变化时发射
的 CurrentIndexChanged() 信号。
GUI 程序设计的主要内容就是对界面上各组件的信号的响应, 只需要知道什么情况下发射
哪些信号, 合理地去响应和处理这些信号就可以了。
槽(Slot)
就是对信号响应的函数。 槽就是一个函数, 与一般的 C++函数是一样的, 可以定义在类的
任何部分(public、 private 或 protected) , 可以具有任何参数, 也可以被直接调用。 槽函
数与一般的函数不同的是: 槽函数可以与一个信号关联, 当信号被发射时, 关联的槽函数被
自动执行。
信号与槽关联是用 QObject::connect() 函数实现的, 其基本格式是:
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
参数 1、 信号的发送者
参数 2、 发送的信号
参数 3、 信号的接收者
参数 4、 处理函数(槽函数)

QMetaObject::Connection QObject::connect(
        const QObject *sender, PointerToMemberFunction signal, 
        const QObject *receiver, PointerToMemberFunction method, 
        Qt::ConnectionType type = Qt::AutoConnection);
参数:
  - sender:   发出信号的对象
  - signal:   属于sender对象, 信号是一个函数, 这个参数的类型是函数
              指针, 信号函数地址
  - receiver: 信号接收者
  - method:   属于receiver对象, 当检测到sender发出了signal信号, 
              receiver对象调用method方法,信号发出之后的处理动作

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //start是QPushButton  用connect 连接 发送者  接受者 
    connect(ui->start,&QPushButton::clicked,this,&MainWindow::close);
}

MainWindow::~MainWindow()
{
    delete ui;
}


 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值