我有以下佈局:Qt的:通過C類從ClassA的傳遞變量ClassB的
MainWindow <--------- Settings
\
\
V
PerformOps
主窗口接受來自設置傳遞的變量,並把它們傳遞到PerformOps。 如果未使用Settings類,則MainWindow將默認傳遞給PerformOps。
目前我做的:
class Settings{
public:
Settings(*parent);
var1, var2, var3
.
.
void exec();
}
class PerformOps{
public:
PerformOps();
var1, var2, var3;
.
.
void start();
}
class MainWindow{
private:
Settings *set; //share pointers over all methods
PerformOps *op;
bool settings_not_clicked = false;
void saveChanges()
{
QSettings settings("my","app");
settings.setValue("value1", op->var1);
settings.setValue("value2", op->var2);
settings.setValue("value3", op->var3);
}
void loadChanges()
{
QSettings settings("my","app");
op->var1 = settings.value("value1");
op->var2 = settings.value("value2");
op->var3 = settings.value("value3");
}
void closeEvent(QCloseEvent *event)
{
event->ignore();
saveChanges();
event->accept();
}
void takeDataAndDoStuff() //This is always called
{
op = new PerformOps;
if(settings_not_clicked) {
loadChanges()
}
else {
op->var1 = 33;
op->var2 = "Geronimo!";
op->var3 = true;
}
op->start();
}
void getStuff_maybe_if_clicked() //This might not be always called
{
Settings *set = new Settings(this);
set->exec() //Pause parent, run Settings
settings_not_clicked = false;
}
問:是否有不訴諸骯髒的方法來共享跨類數據的更清潔的方式:op->var1 = set->var1;
,考慮到該set
指針可能並不總是被初始化?
只是想知道(無關的問題),你知道'QSettings'ç姑娘? – SingerOfTheFall 2012-08-07 10:06:08
我無法遵循這是什麼問題..你爲什麼稱它爲「髒」? – 2012-08-07 10:14:15
@SingerOfTheFall是的,我正在使用它 - 這是我的問題的主要來源。 例如,當我保存更改時,我從'set'指針寫入所有值。但是當閱讀我的更改時,我在哪裏閱讀?回到設置指針?這是不允許的。 – tetris11 2012-08-07 10:14:24