一、什么是信号槽机制
信号槽机制是Qt的核心特性,是对C/C++的拓展,应用于对象与对象之间的通信。信号槽的处理依赖于moc(Meta Object Compiler)工具。
信号槽机制很好地完成了界面操作的响应,类似于MFC和matlab GUI中的callback函数。信号与槽会通过connect函数进行连接,信号会在某种情况或者动作下由某个对象发射,连接了该信号的槽会接收到该信号,然后执行相应的操作。
二、信号槽机制的连接方式
比较常用的连接方式是,对象A发射信号,对象B的槽函数接收信号做出响应。函数原型:QMetaObject::Connection connect (const QObject *, const char*, const QObject*, const char*, Qt::ConnectionType)。一般只使用前面的四个参数,即connect(sender, signal, receiver, slot)。sender发送signal,然后receiver的slot接收信号。
以下举个小例子,点击按钮关闭窗口。
创建Qt Widgets Application,基于QMainWindow类,不包含ui文件。修改MainWindow构造函数如下:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QPushButton *btn1 = new QPushButton(tr("Close"));//创建一个按钮控件
QHBoxLayout *mainLayout = new QHBoxLayout;
main