Qt--信号和槽

//头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H

//源文件
#include "widget.h"
#include<QPushButton>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QPushButton *btn = new QPushButton(QStringLiteral("按钮"),this);
    btn->setGeometry(100,100,50,50);//前两个参数代表坐标,后两个参数代表按钮大小

    //qt4版本写法
    //connect(btn, SIGNAL(clicked(bool),this,SLOT(close())));
    //qt5版本普通写法
    //connect(btn, &QPushButton::clicked,this,&QPushButton::close);
    //qt5版本lambda写法
    connect(btn,&QPushButton::clicked,[=](){btn->setText("Change");});

    /*
     * 信号和槽,信号类比于短信,槽类比于接收短信的手机
     * 1.信号:普通函数(signals),只需声明无需实现
     * 2.槽函数:Qt5类中的任意成员函数,静态函数,全局函数,lambda表达式
     * 3.信号和槽可以使用Qt内部定义好的,也可以自己定义
     * 4.信号和槽没有返回值,但是可以有参数
     * 5.信号和槽的参数列表顺序必须一致
     *   void signal(int , double , char);
     *   void slot(int , double , char);
     *  6.信号和槽的参数个数可以不一样
     *  信号的参数个数可以大于槽函数的参数个数,反之不行
     *
     *  信号槽的扩展:
     *  1.一个信号可以连接多个槽函数,槽函数执行的顺序是随机的,不能控制
     *  2.一个槽函数可以被多个信号连接
     *  3.信号可以连接信号
     *  4.信号槽连接成功后,可以断开连接disconnect
     *  5.槽函数可以是lambda表达式
    */
}

Widget::~Widget()
{
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值