Qt信号与槽机制

信号与槽是 Qt 编程的基础。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。

  1. 信号:就是指在特定情况下被发射的事件,例如ComboBox最常见的信号是选择的列表项变化时的 CurrentIndexChanged() 信号,还有PushButton 按钮常见的信号是鼠标单击时的clicked()信号。
  2. 槽:就是对信号响应的函数。槽就是一个函数,与一般的C++函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。
  3. 信号与槽关联是通过 connect() 函数实现的,其基本格式是:

connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));

connect()函数其实是QObject 类的一个静态函数,而 QObject 是所有 Qt 类的基类,在实际调用时可以忽略前面的限定符。

下面我们通过一个案例来了解信号与槽机制:

首先我们在dialog.h文件添加一个按钮和一个槽函数,如

#include <QDialog>
#include <QPushButton>
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog(){};
public slots:
    void onBtnClicked();
private:
    QPushButton *btn;
};

再到dialog.cpp具体实现方法:

#include "dialog.h"
#include <QDebug>
//需要显示中文时添加
#pragma execution_character_set("utf-8")
Dialog::Dialog(QWidget *parent) :
    QDialog(parent)
{
btn = new QPushButton(tr("btn"),this);
    connect(btn,&QPushButton::clicked,this,&Dialog::onBtnClicked);
}
void Dialog::onBtnClicked()
{
    qDebug() << "你点击了按钮";
}

那么当我们点击按钮后就会在应用程序下输出以下内容:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值