从零开始的Qt(信号和槽)

信号和槽

1、信号

当用户或系统触发一个动作,导致某个窗口发生变化,该控件就会发射一个信号,信号就可以调用一个函数,必须时还可以附加参数。
如:QPushButton 控件中就有 clicked(void) 信号。

2、槽

槽就一个普通的类成员函数,它可以是公有的、私有的、保护护的,可以被重载也可以被覆盖,其参数、返回值可以是任意类型,可以被直接调用。
与普通函数的区别就是它可以被信号触发,自动执行。
如:窗口控件QWidget中默认就有 close(void) 槽函数。

3、信号和槽的连接

注意:QObject是Qt中所有类的父类
bool QObject::connect (
const QObject * sender, // 信号发送者
const char * signal, // 信号签名字符串,复制或使用自动提示
const QObject * receiver, // 信号的接收者
const char * method); // 槽函数签名字符串,复制或使用自动提示

SIGNAL() 将信号函数签名转换成字符串
SLOT() 将槽函数签名转换成字符串

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QObject>

int main(int argc,char* argv[])
{
	QApplication app(argc,argv);
	
	QWidget w;
	w.resize(400,400);
	w.show();

	QPushButton btn("exit");
	btn.show();

	QObject::connect(&btn,SIGNAL(clicked(void)),&w,SLOT(close(void)));
	QObject::connect(&btn,SIGNAL(clicked(void)),&btn,SLOT(close(void)));

	return app.exec();
}

猜你喜欢

转载自blog.csdn.net/weixin_45050225/article/details/100526607