2009-04-10 17 views
1

Meine Qt-Anwendung sollte in der Lage sein, ein einzelnes "Projekt" auf einmal zu erstellen/zu öffnen/speichern. Was ist die schmerzfreie Methode, Projekteinstellungen in einer Datei zu speichern? Sollte es XML oder etwas weniger schreckliches sein?Wie gehe ich mit "Projektdateien" in meiner Qt-Anwendung um?

Natürlich können sich Daten, die in einer Datei gespeichert werden, im Laufe der Zeit ändern.

Was ich brauche, ist so etwas wie QSettings aber begrenzt auf ein Projekt in meiner Anwendung und nicht für die gesamte Anwendung.

+0

Was meinen Sie mit projcet Einstellungen? Reicht das von Qt generierte Projekt/Makefile nicht aus? – dirkgently

+0

was er meint: sein Programm benutzt verschiedene Projekte. Er möchte wissen, wie man das am besten speichert. – RvdK

+0

@PoweRoy, das ist was ich will –

Antwort

1

Sie können QSettings verwenden, um Daten in einer bestimmten INI-Datei zu speichern. Aus der Dokumentation:

Manchmal möchten Sie auf Einstellungen zugreifen, die in einem bestimmten Datei- oder Registrierungspfad gespeichert sind. Wenn Sie eine INI-Datei direkt lesen möchten, können Sie auf allen Plattformen den Konstruktor QSettings verwenden, der als erstes Argument einen Dateinamen annimmt und QSettings :: IniFormat als zweites Argument übergibt. Zum Beispiel: Einstellungen von QSettings ("/ home/petra/misc/myapp.ini", QSettings :: IniFormat);

1

Ich um es Benutzer editierbar zu machen, würde ich mit nur einem Schlüssel plain text = Werte für Linie, wie in den meisten der Linux-Anwendungen.

Dies ist jedoch nur für die Einstellungen, nicht für die gesamten Projektdaten, die komplexere Strukturen erfordern.

Also vielleicht JSON?

1

Pro XML:

  • Sie einen Blick auf sie in einem Editor haben
  • Sie jede Art von Zeichenfolge speichern kann darin in einer beliebigen Sprache (Unicode-Unterstützung)
  • Es ist einfach
  • zu lernen
  • Mehrere Programme können dasselbe XML lesen
  • Es ist einfach, Ihre Daten mit XML zu strukturieren. Wenn Sie beispielsweise Schlüssel-/Wertelisten verwenden, treten Probleme auf, wenn Sie baumartige Strukturen speichern müssen.

Contra XML

  • Das Ergebnis ist etwas aufgebläht
  • Die meisten Programmiersprachen (vor allem alte wie C++) haben keine gute Unterstützung für XML. Die alten XML-APIs wurden so entworfen, dass sie in jeder Sprache implementiert werden konnten (kleinster gemeinsamer Nenner). sagte Nuff.
  • Sie müssen das Konzept der "Codierung" (oder "Zeichensatz") verstehen. Während dies auf den ersten Blick trivial erscheinen mag, gibt es einige versteckte Probleme, die Sie beißen können. Also teste deinen Code immer mit einigen Umlauten und sogar Kanjis (japanische Zeichen), um sicher zu gehen, dass du alles richtig gemacht hast.
+1

Qt hat sehr gute XML API http://doc.trolltech.com/4.0/qtxml.html. – Sharique

+2

Diese API basiert auf DOM, das in meinem Buch keine "sehr gute XML-API" ist. Ich denke lieber "html.body.p [3] .text = '...'"anstelle von getRootElement(). getChildElement (" body "). getChildElements (" p "). get (3) .setText (" ... "); –

Verwandte Themen