概念:
在学习Qt的过程中,信号槽是较早学习的重点内容,它就像连接代码与组件的桥梁,实现对象之间的通信。
使用信号槽必须的条件:
●通信的对象必须继承自QObject
●类中要有Q_OBJECT宏
函数原型:
QObkect::connect( 参数1,参数2,参数3,参数4);[static]
参数1:发射者,通信的对象,此对象是信号槽触发的来源
参数2:信号函数,使用SIGNAL()包裹,表示发射者触发的效果
参数3:接收者,通信对象,此对象是执行结果代码的主体
参数4:槽函数,使用SLOT()包裹,表示接收者要执行的函数
静态成员函数connect继承自QObject类,用于连接信号槽之间的因果关系
例:点击按钮,关闭窗口
分析:
参数1,按钮对象;
参数2,点击函数;
参数3,窗口对象;
参数4:关闭函数。
编写代码的文件:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QPushButton>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
private:
QPushButton* btn;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
resize(300,300);
btn = new QPushButton("关闭",this);
btn->move(100,100);
connect(btn,SIGNAL(clicked()),this,SLOT(close()));
}
Dialog::~Dialog()
{
delete btn;
}
编写上述代码后:
运行就出来这个弹窗,点击关闭窗口就会退出。
信号的使用有三种方式:
●自带信号 → 自带槽
●自带信号 → 自定义槽
●自定义信号 → 槽函数
有时间再写。。。。