目录
一、什么是信号槽
1.信号
以 QPushButton 的单击事件为例:
按下按钮,会触发 mousePressEvent 事件,然后 QPushButton 会发射 pressed() 信号;
松开按钮,会触发 mouseReleaseEvent 事件,然后 QPushButton 会发射 released() 信号和 clicked() 信号。
// 当按钮被点击(按下并抬起)之后,发送该信号,其中带有一个默认参数
// 对于QPushButton 通常不需要传递这个默认参数
// 对于可选中/取消选中的按钮,比如复选框QCheckBox、单选框QRadioButton 可以通过该参数,获取其是否选中
void clicked(bool checked = false);
// 当按钮被按下时,发送该信号
void pressed();
// 当按钮被抬起时,发送该信号
void released();
// 当按钮状态改变时,发送该信号,其中带有一个参数checked
// checked 用于标识复选框QCheckBox、单选框QRadioButton是否被选中
void toggled(bool checked);
2.槽
我们通常说的槽,就是槽函数
当点击了 QPushButton
按钮之后,通常需要执行对应的操作,比如让 QMainWindow
窗口最大/最小/正常化显示,或者关闭窗口
// 最大化显示
void showMaximized();
// 最小化显示
void showMinimized();
// 正常显示
void showNormal();
// 关闭窗口
bool close();
3.信号与槽关联
需要将信号和槽使用 connect
函数进行连接
connect
函数的一般形式如下:
connect(sender, signal, receiver, slot);
sender发出信号的对象。比如 QPushButton 按钮
signal发出的信号。比如 clicked()
receiver接收信号的对象。比如 QMainWindow 窗口
slot接收到信号之后,调用的函数