Globaler 'Getter' für Qsettings

Verschiedenes zu Qt
Antworten
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

Globaler 'Getter' für Qsettings

Beitrag von huckleberry »

Hallo,
ich habe eine QDialog geschrieben, in welchem ich bestimmte Konfigurationen für mein Programm einstellen kann. Zum Beispiel kann ich dort einen Pfad zu einem Ordenr einstellen, in welchem bei Programmstart spezielle Dateien gesucht werden sollen. Beispielsweise müssen diese Dateien (in diesem Ordner) bei Programmstart geladen werden. (Stellt euch einfach einen "plugins" Ordner vor, in welchem *.dll Dateien liegen und beim Start geladen werden sollen.)

im Konstruktor von meinem Hauptfenster

Code: Alles auswählen

class MainWindow : public QWidget 
steht dann

Code: Alles auswählen

QString pathToDLLs = Configuration::getDLLPath(this);
//..
loadDlls(pathToDLLs);
///.. und weiter
und meine

Code: Alles auswählen

QString Configuration::getDLLPath(QWidget* t_parent)
{
  QString rDLLPath = QString();

  QSettings cfg("./myprog.ini", QSettings::IniFormat);
  rDLLPath = cfg.value("MyProg/dllPath").toString();

  if (rDLLPath.isEmpty())
  {
      DlgConfig *dlg_config = new DlgConfig(t_parent);
      dlg_config->show();

	  QSettings cfg("./myprog.ini", QSettings::IniFormat);
	  rDLLPath = cfg.value("MyProg/dllPath").toString();
  }
  return rDLLPath;
}
Wenn die myprog.ini schon verfügbar ist, klappt es soweit ganz gut. Für den Fall zB nach einer Neuinstallation (also wenn noch keine *.ini Datei existiert) wird mein Dialogfesnter geöffnet, aber bevor ich den Pfad dort einstellen kann, ist mein Hauptfesnter bereits (ohne die *.dll) geladen..
Manche Configurationswerte werden an versch. Stellen benötigt, deswegen ist mein getDLLPath beispielsweise public static.

Wie kann ich mein hauptfenster dazu bringen meine Eingabe im Dialogconfig abzuwarten? Oder gibt es vtl. eine bessere Lösung?

Ich danke schonmal und VG
Huck
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Re: Globaler 'Getter' für Qsettings

Beitrag von MichaelS »

huckleberry hat geschrieben: Wie kann ich mein hauptfenster dazu bringen meine Eingabe im Dialogconfig abzuwarten? Oder gibt es vtl. eine bessere Lösung?
Erst prüfen, ob eine Ini-Datei vorhanden ist, ggf. den Einstellungsdialog anzeigen und dann MainWindow instanzieren.
Antworten