qt中一个ui中的widget与另一个ui中的dialog之间的交互

来源:互联网 发布:冰魄寒鞭淘宝 编辑:程序博客网 时间:2024/06/07 12:25

这次是用qt做一个ini文件参数配置的工具。
其中有一个功能是,点击widget中的添加按钮,弹出dialog,人工写入标识,进行动态库添加,按dialog中的确认按钮,写入ini配置文件。此时还需要widget重新读一遍配置文件,刷新出新添加的值进入combox控件。把这个功能分成如下两个阶段来实现。(读写配置文件不在此文中赘述,可见http://blog.csdn.net/wangshenweiwu/article/details/78002273)

点击widget中的添加按钮,弹出dialog
1.项目最初建立的项目是qt widgets application,继承QWidget
2.新建dialog文件,选择QT中的Qt设计师界面类,把它添加到之前widget的项目之中。
3.在widget的.h文件中#include"dialog.h"
4.在widget的.h文件中类声明的private数据成员里添加以下代码:

Dialog  *clickPushButton;

5.在widget.cpp中的添加按钮槽函数中添加以下代码:

clickPushButton = new Dialog(this);    clickPushButton->show();


点击dialog的确认按钮,widget感应到此信号,重新读一遍ini配置文件。
本质还是一个跨ui的信号与槽函数的应用
1.在dialog.h的类中添加信号

signals:    void sendvarydata();

2.在dialog.cpp中的按下确认按钮的槽函数中传递信号

   //在配置文件中新增动态库的代码实现//     emit sendvarydata();

3.在widget.h的类中添加对应的槽函数

public slots:    void recvvarydata();

4.在widget.cpp中的添加按钮槽函数中添加以下conncet连接
此处需要注意的是,这个connect函数需要卸载new完dialog之后,而不是在widget的构造函数中。
connect(clickPushButton, SIGNAL(sendvarydata()), this, SLOT(recvvarydata()));
与一步中的第五点连起来,这个添加按钮的槽函数代码如下:

clickPushButton = new Dialog(this);clickPushButton->show();connect(clickPushButton, SIGNAL(sendvarydata()), this, SLOT(recvvarydata()));

5.最后在widget.cpp中添加槽函数实现

void recvvarydata(){ //重新读取配置文件的代码实现//}
阅读全文
1 0