QT 信号与槽

一、基本概念介绍

QT(即Qt)是一个跨平台的C++开发框架,用于创建高性能、可扩展和易于维护的应用程序。QT的核心概念之一就是信号与槽(Signals and Slots)机制。

信号与槽是一种用于对象间通信的机制,通过信号和槽的连接,一个对象可以发出一个信号,而其他对象则通过连接到这个信号的槽来接收并响应该信号。信号和槽可以跨越不同的对象、线程和模块,提供了一种松耦合和灵活的通信方式。

在Qt中,一个类可以定义自己的信号和槽。信号是类内定义的特殊函数,用于向外界发出通知,而槽是接收信号并处理相应事件的函数。通过使用connect()函数,可以将一个信号连接到一个槽上,使得信号被触发时,相关的槽函数会被调用。

二、信号与槽创建图形化方式

2.1方式一

在下面选择信号与槽,点击+号按键

2.2 方式二

三、信号与槽使用代码实现

3.1 自动连接方式

自动生成对应的槽函数

函数widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <iostream>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

函数widget.c

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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


void Widget::on_pushButton_clicked()
{
    std::cout <<"Hello " << std::endl;
}

3.2  QQobject::connect 方式

拖一个btn进来

在widget.cpp自定义一个槽函数

在widget.h中声明出来

在widget.c 中实现出来

最后实现函数

3.3 Lamda表达式

使用表达式进行捕获

  QObject::connect(ui->btnlamda,&QPushButton::clicked,[=](){
    cout << "3 way to make it" << endl;
   });

3.4

四、自定义信号与槽

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值