【Qt教程】1.7 - Qt5带参数的信号、信号重载、带参数的槽函数、槽函数重载

本文详细介绍了Qt中信号与槽机制的原理及应用,包括信号与槽的基础使用、信号与槽的重载、带参数的信号与槽的使用方法等。

原理:与C++语法一致,信号、槽函数都可以发生重载,使其在名称不变的情况下,传递过程可以携带参数。

示例说明:我们从一个最普通的信号槽工程中,来修改,对信号、槽进行重载,使信号、槽携带参数。

 

1. 普通信号 - 工程源码

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT

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

    void sendSignalSlot();
    void dealSignalSlot();

signals:
    /*
     * 信号必须有signals关键字来声明
     * 信号没有返回值,但可以有参数
     * 信号就是函数的声明,只需声明,无需定义
     * 使用:emit mySignal();
     * 信号可以重载
    */
    void mySignal();


private:
    QPushButton btn1;

};
#endif // WIDGET_H

 

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    btn1.setParent(this);
    btn1.setText("sendText");
    btn1.resize(80,25);
    btn1.move(100,100);

    resize(320, 240);
    setWindowTitle("Hello!");

    connect(&btn1, &QPushButton::clicked, this,  &Widget::sendSignalSlot);

    connect(this, &Widget::mySignal, this, &Widget::dealSignalSlot);
}

void Widget::sendSignalSlot()
{
    emit mySignal();
}

void Widget::dealSignalSlot()
{
    btn1.setText("Done!");
}

Widget::~Widget()
{
}

 

现象

  • 点击 "sendText" 按钮,按钮文字变为 "Done!"。

    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值