QT学习笔记——信号与槽

connect() 函数最常用的一般形式:

connect(sender, signal, receive, slot);
// sender: 发出信号的对象
// signal: 发送对象发出的信号
// receive: 接收信号的对象
// slot: 接收对象在接收信号之后调用的函数

QT5和QT4举例(按钮):

//QT5:
connect(&button, &QPushButton::clicked, &app, &QApplication::confirm);
//QT4:
connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
//SIGNAL和SLOT的作用是将两个函数名转换成字符串
//QT5在语法上完全兼容QT4

自定义信号槽:

  • 只有继承了QObject类的类,才具有信号槽的能力,凡是QObject类,不论是直接子类还是间接子类,都要在类定义的第一行代码写上Q_OBJECT。
  • 自定义信号槽的类定义里除了public和private还多了一个signals,signals块列出的就是该类的信号。信号就是一个函数名,返回值为空,参数是该类需要被外界知道的数据。信号作为函数名,不需要在cpp函数中添加实现。
  • emit是QT对C++的扩展。emit的意思就是发送。
  • QT5中,任何成员函数,static函数、全局函数和lambda表达式都可以作为槽函数。与信号函数不同,槽函数必须自己完成实现代码。

 

你可能感兴趣的:(学习)