发生的原因与事件
前言
介绍了QT的信号与槽函数
一、什么是信号与槽(Signals and Slots)?
1.1 信号(Signals)
定义:信号是对象发出的通知,表示某个特定的事件发生了。
例如,当用户点击一个按钮时,按钮对象会发出一个clicked信号。
特点:
- 信号是在类中声明的,通常在类的signals部分声明。
- 信号的声明类似于普通函数的声明,但不需要实现(即不需要定义函数体)。
- 信号的发出是通过emit关键字实现的。例如,emit buttonClicked();。
- 信号可以携带参数,这些参数可以传递事件相关的数据。
1.2 槽(Slots)
定义:槽是普通的成员函数,可以被信号触发。当某个信号被发出时,与该信号连接的槽函数会被自动调用。
特点:
- 槽函数可以是任何普通的成员函数,也可以是静态函数。
- 槽函数的声明和实现与普通成员函数相同。
- 槽函数可以被多个信号连接,也可以不被任何信号连接。
- 槽函数可以有参数,这些参数必须与连接的信号的参数匹配。
1.3 连接方式
信号和槽之间的连接是通过connect函数
实现的。
二、调用基本的信号与槽函数
2.1 代码
其中,不在main函数做任何修改
- mywidget.cpp
#include "mywidget.h"
#include <QPushButton>
// 构造函数
// 调用基类 QWidget 的构造函数,将 parent 参数传递给它
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
button1.setParent(this);
button1.setText("colse1");
button1.move(100,100);
button2 = new QPushButton(this); // 指针动态分配空间
button2->setText("colse2"