信号和槽是一种通信机制,用于 Qt 对象之间的通信
Qt 对象:QObject 类及其派生类的对象,称为 Qt 对象
信号和槽的本质就是函数当一个Qt对象的内部状态发生改变时,就可以发出一个信号
当一个Qt对象收到这个信号后,就可以执行指定的功能
信号和槽的连接:
QObject 类提供了一个函数connect(),用于连接两个Qt 对象的信号和槽对于Qt对象的通信,Qt系统需要了解如下信息:
哪个对象发出了信号
发出了什么信号
哪个对象接收信号
收到信号后做什么
所以,connect 函数的常规参数如下:
connect(sender, SIGNAL(信号函数名(参数类型)), receiver, SLOT(槽函数名(参数类型)));
说明:
sender 与 receiver 是Qt对象的地址
connect函数需要执行一次,且只需要执行一次。所以,一般情况下,connect函数通常出现在构造函数中
所有的界面元素对象,都可以进行通信,而且还预定义了一些信号和槽,可直接使用
如果预定义的信号和槽功能不能满足项目的需要,还可以自定义信号和槽
自定义信号:
1. 在头文件中声明信号
signals:
返回类型 信号函数名(参数列表);
2. 使用信号
发信号:emit 信号函数名(参数列表);
自定义槽:
1. 在头文件中声明槽函数
public/private/protected slots:
返回类型 槽函数名(参数列表);
2. 在源文件中添加定义
返回类型 类名::槽函数名(参数列表) {
// 槽函数体
}
3. 使用
可以使用普通函数一样的直接调用槽函数
可以用connect与某个信号相关联,当连接的信号发出时,立即自动调用该槽函数
信号和槽的连接有两种形式:手动连接:自己调用connect函数,连接两个对象的信号和槽
自动连接:从界面设计器中 右键 转到槽,自动生成槽函数,根据对象名和信号函数名,自动连接
用其中之一即可
一般呢,是能转到槽,就转到槽,否则就自己书写connect
例:
按钮 最常见的信号 叫 clicked()
按钮 也有自带的槽函数,如:show() / hide() / setText() ......
界面 常用的槽函数,有 show() / close() / hide() ......
QT信号和槽
于 2024-10-28 21:02:37 首次发布