//头文件
#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()
{
}
Qt--信号和槽
最新推荐文章于 2024-11-06 23:29:08 发布