信号与槽:
基本实现
Qt框架的核心设定就是信号与槽机制嘛,工作思路一般是:
1、信号函数:会在其设定的时间点发出,只需声明,无需函数体;使用emit关键字发出。
2、槽函数:在与其关联的信号函数发出时(类似于广播),该槽函数就会被触发调用。
3、槽函数的传参:槽函数的参数由信号函数负责传递;所以要求信号和槽函数的参数一毛一样,或者至少槽函数的所有参数同信号函数的前几个参数一毛一样,以便传参。(也就是说槽函数的参数个数小于等于信号函数的)
4、connect函数:用于将信号函数与槽函数相关联起来。
connect(sender, signal, receiver, slot);
参数(皆为指针型):
sender:发出信号的对象,例:ui->pushBotton
signal:发送对象发出的信号,例:&QAction::triggered
receiver:接收信号的对象,例:this
slot:接收对象在接收到信号之后所需要调用的函数,例:&MainWindow::aboutOut
窗口关闭时的响应
窗口关闭时会触发closeEvent事件函数,注意:这是个事件函数,既不是槽也不是信号。而且它在一个单独的类里,需要include一下。
//窗口类的头文件里加上:
#include <QCloseEvent>
//窗口类里加上其重定义的声明:
protected:
void closeEvent(QCloseEvent* event);
它会在相应窗口被关闭的时候被调用。例如,我想在TestWindow窗口关闭时调用它,来实现一些功能。
//在相应窗口的cpp文件中:
void TestWindow::closeEvent(QCloseEvent *event)
{
//TODO: 在退出窗口时,实现希望做的操作
}
多窗口:
创建多个窗口
第一步、自定义窗口的话就在Forms文件夹下添加一个Qt设计师界面类,然后开始敲新窗口;合并项目的话(一般是抄已有示例时233)就先把其它项目里的相应.h .cpp .prc .ui等文件复制进主项目,然后别忘改一下主项目的.pro文件。
第二步、在主窗口的头文件里
添加上子窗口的头文件
#