Ich habe in meiner MainWindow-Klasse die QMap angelegt:
Header:
Code: Alles auswählen
...
private:
QMap<QString, QDialog*> *dialogMap;
};
#endif
Cpp:
Code: Alles auswählen
MainWindow::MainWindow()
{
....
dialogMap = new QMap<QString, QDialog*>;
}
void MainWindow::newProject()
// invoke the newProject dialog for creating a new I-MET project
{
if (maybeSave() && !proDial)
{
proDial = new ProjectDialog(this);
dialogMap->insert("NewProjectDialog", proDial);
proDial->setDialogMap(*dialogMap);
// Übergabe des QMap an die Dialogklasse
proDial->exec();
}
}
Ist die Übergabe an die Dialogklasse sinnvoll bzw. notwendig?
Dialogklasse NewProjectDialog:
header:
Code: Alles auswählen
...
public:
void setDialogMap(QMap<QString, QDialog*> &diagMap) {dMap = diagMap;}
private:
QMap<QString, QDialog*> dMap;
};
Cpp:
Code: Alles auswählen
...
void ProjectDialog::on_cameraEditButton_clicked()
// create a new camera file or edit an existing one
// Aufruf des zweiten Dialogs vom ersten aus
{
camEdit = new CameraEditorFormDialog(this);
dMap.insert("CameraEditor", camEdit); // einfügen des zweiten Dialoges in die QMap
camEdit->setDialogMap(dMap);
// übergabe des QMap als Referenz an die zweite Dialogklasse
this-hide();
camEdit->exec();
}
Zweite Dialogklasse:
header:
Code: Alles auswählen
...
public:
void setDialogMap(QMap<QString, QDialog*> &diagMap) {dialogMap = diagMap;}
private:
QMap<QString, QDialog*> dialogMap;
};
Cpp:
Code: Alles auswählen
void ...
{
NewProjectDialog p_newProject = (NewProjectDialog*)dialogMap.value("NewProjectDialog");
// Abruf des gespeicherten Zeigers auf den Projektdialog
p_newProject->setCameraID(ui.CameraIDEdit->text());
//Versuch eine private Variable des ProjektDialoges zu verändern -> scheitert
}