• 5352阅读
  • 4回复

[提问]如何在QT的不同界面间交流参数 [复制链接]

上一主题 下一主题
离线uiprofans
 

只看楼主 倒序阅读 楼主  发表于: 2012-10-12
问题描述
某个程序,有若干个对话框界面:dlg_A, dlg_B, dlg_C等。
打开dlg_A界面,调整并输入若干个参数之后,关闭dlg_A。希望做的事情是(默认这些参数都被放在某个结构体参数中):
1.当dlg_A界面参数没有重新设置时,dlg_A中参数采用默认参数;如果dlg_A界面参数重新设置之后,再次打开dlg_A界面时,调用设置之后的参数。
2.如果dlg_A界面参数没有重新设置,打开dlg_B, dlg_C界面时用这两个界面的默认参数打开各自界面;如果dlg_A界面参数重新设置之后,dlg_B和dlg_C界面打开之后的界面的参数是设置完之后的参数。

初步考虑的解决思路是:在dlg_A界面中参数做调整之后,dlg_B和dlg_C界面中有关参数做出相应的调整。但如果需要处理的界面很多的话,这样做肯定不可行。且参数设置时,有很多界面并不一定会打开,这样就无法直接调用这些界面的显示结果。

所以,我现在想到另外一个办法:设置某种具有全局性质的变量F(或类),将所有界面所需要用到的参数都保存在这个变量F(或类)中,在dlg_A中参数有了修改之后,F中相应的数据做相应的修改,然后dlg_B和dlg_C的有关参数的设置通过F的相应的调用来实现。但我现在不知道如何设置这个全局性质的变量F(或类)了。

不知大家是否遇到过类似的问题,有没有比较好的解决办法?或者告诉我如何设置全局变量F。多谢大家了。
离线uiprofans

只看该作者 1楼 发表于: 2012-10-12
不同界面之间所保存参数结构体: StructF
界面A:classA; 界面B: classB; 界面C: classC
下面是我上面这些话的一些主要内容描述,采用的是希望用槽函数传递结构体参数的思路,大家觉得如何修改可使得这些槽函数在响应是可自由传递结构体参数structf1

StructF structf1;  // 定义传递参数结构体structf1
connect(classA, SIGNAL(clicked()), this, SLOT(actionA()));  // action1()是某个槽函数

// actionA()槽函数如下:
{
dialogA=new A_dialog(this);
dialogA->show();
}
离线kh99827765

只看该作者 2楼 发表于: 2012-10-13
class globalData{
      static StructF structf1;
      .......
      ......
};
离线uiprofans

只看该作者 3楼 发表于: 2012-10-14
倒腾了差不多了,用得还是经典的全局变量的方式来处理。办法与VC中类似。好久没摸这些界面编程了,看来忘记得太厉害了。
离线zswx0226

只看该作者 4楼 发表于: 2012-10-15
我觉得最好用的还是QSettings,
通过一个Qsettings既可以设置默认的值,也可以使用新值,当打开B,Cdialog时,可以读取Qsettings中的数据,如果没有更改,就用默认值
快速回复
限100 字节
 
上一个 下一个