Frage

Ich bin eine Qt-Anwendung zu schreiben und die Einstellungen für das Programm speichern muß. Ich mag, dass sie leicht von nicht-fortgeschrittenen Benutzern editierbar sein noch flexibel genug sein, für fortgeschrittenen Anwender (also ermöglicht eine einfache automatisierte Bearbeitung über andere Programme, Skripte, was auch immer). QSettings hat zwei Formate zur Verfügung stellen, das native Format, das für Windows-Registrierung, und das INI-Format, das für die meisten anderen Plattformen heimisch ist. INI ist in Ordnung, aber da @QString (...) oder andere Qt Sachen in der es nicht wirklich lesbar und ist irgendwie fehleranfällig.

Die Registrierung ist auch nicht so toll. Es wurde nicht mit verwirrt werden ausgelegt und somit nicht gerade gut für die Bearbeitung oder erweiterte Nutzung; es hat das Problem der Synchronisation über Threads und mehrere QSettings Objekte lösen (so kann ich alles nicht auslöschen, obwohl ich nur ein globales Objekt verwenden kann, durch einen Lese-Schreib-Schließfach geschützt). Ich bin auf XML suchen, aber es ist ziemlich verflixt ausführlich und es erfordert ein QSettings-Format (nicht wirklich ein Problem) zu schreiben, aber sehr flexibel.

Ich weiß, dass andere Alternativen zu XML existieren, aber ich bin nicht wirklich vertraut mit ihnen; Ich möchte auf keinen Fall einen Parser, Ausnahme für mein eigenes Endformat schreiben, nicht für die Basis Sache.

Update - Hinweis: Ich werde überhaupt nicht umgehen QSettings, ich will nur ein Format für sie schreiben - das wie es aussieht, sind nur zwei Funktionszeiger (für eine Lese- und eine Schreibfunktion) bestehen auf eine statische Funktion und dann kann ich mein Format verwenden.

Update 2: ich über Linux-Server auch besorgt bin, die in der Regel nicht über eine GUI haben .. Ich mag, dass die Konfiguration einfach vom Server über nano oder etwas bearbeiten können, ähnlich , ohne den Manager mit (ja, ich werde einen Daemon-Server und einen Remote-GUI-Manager).

War es hilfreich?

Lösung

Wenn Sie aus irgendeinem Grund QSettings am Ende unter Umgehung und unter Berücksichtigung XML für Ihre Konfigurationsdatei, empfehle ich Ihnen Blick auf JSON oder Yast gehen, je nachdem, wie Sie den verfügbaren Libs mögen.

Als Nebenbei bemerkt, wenn Sie nicht beabsichtigen, Benutzer immer die Datei manuell bearbeiten müssen, nur wählen, was für Sie am einfachsten ist (QSettings?) Und mit Ihrem Leben weitergehen, da die Wahl des Formats keine einzige Rolle, Bit (har har).

Andere Tipps

Sie können die QSettings Klasse dies zu erreichen. Es ist eine Abstraktion Klasse, mit denen Sie Ihren Anwendungen die Einstellungen speichern, um sie bei der nächsten Start abgerufen werden.

Einstellungen speichern:

QSettings settings("ValueName",  "Value");

Lesen Einstellungen:

QString v = settings.value("ValueName");

Ich würde beginnen, die QSettings über INI-Dateien mit zu tun, und sehen Sie, wenn Sie mit vielen Problemen mit ihm enden. Wenn es keine Probleme gibt, dann gibt es keine Notwendigkeit für eine XML-Lösung zu gehen. Wenn Sie die XML-Lösung wollen am Ende tun, könnten Sie (wie bereits erwähnt) in einen Formatierer für die QSettings Objekte.

Eine weitere Möglichkeit, bei Ausführlichkeit zu sehen ist Inhalt Robustheit. Wenn aus irgendeinem Grunde (ein Alphateilchen die Scheibe zu bombardieren, wodurch einzelne Bit Flip), können Sie immer noch da reingegangen und die notwendige Fehlerkorrektur machen ... so gibt es Nutzen, sondern auch Kosten verbunden ... mit einem Binärdatei, ein einzelner Bitfehler bedeutet, dass die Daten vollständig verloren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top