Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 24

Thema: QSettings

  1. #1
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667

    QSettings

    Hi,

    ich muss leider auch mal wieder was fragen :-/.

    Ich habe die Klasse QSettings entdeckt die verspricht usereinstellungen abzuspeichern.
    Das wollte ich natuerlich gleich ausprobieren.

    Also habe ich folgendes( und noch sehr viel mehr ) probiert:

    Code:
    settings.cpp:
    
    #include <qapplication.h>
    #include <qsettings.h>
    #include <qstring.h>
    
    #include <iostream>
    
    using namespace std;
    
    int main( int argc, char *argv[] )
    
    {
    
            QApplication app( argc, argv );
    
            QSettings    settings;
            settings.setPath( "test", "app" );
    
            settings.writeEntry( "/test/app/x", "100" );
            settings.writeEntry( "/test/app/y", "200" );
    
            return app.exec();
    
    }
    was die einstellungen speichern soll.
    und dann ein prograemmchen was es auslesen soll:
    Code:
    settingsread.cpp:
    
    #include <qapplication.h>
    #include <qsettings.h>
    #include <qstring.h>
    
    #include <iostream>
    
    using namespace std;
    
    int main( int argc, char* argv[] )
    {
    
            QApplication app(argc,argv);
    
            QSettings    settings;
    
            settings.setPath( "test", "app" );
    
    
            QString name=settings.readEntry( "/test/app/x", "1" );
            QString nachname=settings.readEntry( "/test/app/y", "1" );
    
            cout<<name.latin1()<<endl;
            cout<<nachname.latin1()<<endl;
    
            return app.exec();
    
    }
    Leider,leider kommen immer die default werte raus, also "1".
    als ich mal write und read in einem programm zusammengefasst hab hat es geklappt mit dem lesen, in getrennten nicht.

    hat einer eine idee was ich falsch mache? muss ich evt. noch zusaetzlich einen suchpath anlegen?

    danke im vorraus,

    tuxipuxi.

  2. #2
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Also, ich halte QSettings nicht gerade für eine entgültige Lösung, was das Speichern von konfigurationen angeht.
    Wir haben das hier in der Firma auch getestet und wieder verworfen, weil eben unter Windows in der Registry rumgepfuscht und unter *unix eine Datei angelegt wird ...
    Letzendlich habe versucht mir was eigenes zusammenzustricken, was in etwa die (read)Funktionen der KConfig Klasse beinhaltet.

    BTW. findet sich da noch jemand, der das weiter mit ausbaut?
    Bodo
    Systemadmistration UNIX

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von TheDodger
    Wir haben das hier in der Firma auch getestet und wieder verworfen, weil eben unter Windows in der Registry rumgepfuscht und unter *unix eine Datei angelegt wird ...
    Ich glaube, man kann auch unter Windows eine .ini machen, in dem man beim Konstruktor als Format QSettings::Ini angibt.


    Letzendlich habe versucht mir was eigenes zusammenzustricken, was in etwa die (read)Funktionen der KConfig Klasse beinhaltet.
    Wir haben in der Firma auch eine eigene Klasse, bzw Basisklasse, die siagr Commandline Parsing macht.


    BTW. findet sich da noch jemand, der das weiter mit ausbaut?
    Du meinst eine Art QConfig?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Original geschrieben von anda_skoa
    Ich glaube, man kann auch unter Windows eine .ini machen, in dem man beim Konstruktor als Format QSettings::Ini angibt.
    Wenn es geht, hab ich das bislang überlesen ...

    Du meinst eine Art QConfig?
    ja, genau
    Geändert von TheDodger (11-07-2003 um 07:27 Uhr)
    Bodo
    Systemadmistration UNIX

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von TheDodger
    Wenn es geht, hab ich das bislang überlesen ...
    Ich zitiere
    QSettings::QSettings ( Format format )

    Creates a settings object. If format is 'Ini' the settings will be stored in a text file, using the Unix strategy (see above). If format is 'Native', the settings will be stored in a platform specific way (ie. the Windows registry).
    Kann aber sein, dass dieser Konstruktor zB erst in Qt3.1 aufgetaucht ist.


    @QConfig:
    Eher was in der Richtung INI Files oder XML?

    Grundsätzlich wäre sowas keine so schlechte Idee, wir könnten eine LGPL oder BSD lizensierte mrunix Toollib machen, die sowas enthält

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Original geschrieben von anda_skoa
    Kann aber sein, dass dieser Konstruktor zB erst in Qt3.1 aufgetaucht ist.
    Kann sein, muß aber nicht

    @QConfig:
    Eher was in der Richtung INI Files oder XML?
    Wie wäre es mit konfigurierbar?
    2 Fliegen mit einer Klappe ... sozusagen.

    Grundsätzlich wäre sowas keine so schlechte Idee, wir könnten eine LGPL oder BSD lizensierte mrunix Toollib machen, die sowas enthält
    Ich bin dafür und stelle gern meine bisherigen Codes zur Verfügung!
    Bodo
    Systemadmistration UNIX

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von TheDodger
    Wie wäre es mit konfigurierbar?
    2 Fliegen mit einer Klappe ... sozusagen.

    Dann brauchen wir aber ein gutes Design.
    KConfig kann theoretisch auch verschiedene Backends, aber das wird dann auch komplizierter.


    Ich bin dafür und stelle gern meine bisherigen Codes zur Verfügung!
    Supi!

    Ich hängt mal eine QDOM basierte hierachische Config von mir an.
    Derzeit GPL lizensiert, aber ich kann ja relizencen

    Ist aber ziemlich alter Code, aus meinen Anfängen mit QDOM, also teilweise übelster Hack

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    Hi,


    ich moechte eure euphorie jetzt nicht bremsen .
    wollte einfach nur bescheid sagen dass ich es jetzt mit QSettings hinbekommen hab.
    das ist eine extrem eigenartige klasse.
    wenn du ein objekt auf dem heap erstellst und in einem slot dann schreiben willst, funktioniert es nicht.

    wenn du dagegen den path neu setzt im slot( setPath( "Interface", "meinInterface", QSettings::User )) funktioniert es.

    Gruss,

    tuxipuxi.

  9. #9
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Original geschrieben von anda_skoa

    Ich hängt mal eine QDOM basierte hierachische Config von mir an.
    Derzeit GPL lizensiert, aber ich kann ja relizencen

    Ist aber ziemlich alter Code, aus meinen Anfängen mit QDOM, also teilweise übelster Hack
    Ich häng mal meine Klasse mit dran. Basiert mehr auf QMap.
    Ist allerdings noch nicht ganz sauber, da ich eine Klasse noch nicht weitergeben darf (die handelt eh nur Debugausgaben).
    Meine Klasse hat auch schon einiges auf den Buckel und ist bei weitem noch nicht fertig ...
    Bodo
    Systemadmistration UNIX

  10. #10
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    68
    Wollte doch mal fragen, wie weit ihr mit dem Projekt seit??
    Ich bräuchte selbst für ein anderes Projekt eine entspr. (reine QT) Klasse, welche hierachisch organsierte Daten transparent in verschiedene Formate (xml, datenbank, etc.) speichern kann und wäre entspr. daran interessiert am Code mitzuwirken bzw. mitzuwerkeln :-)
    s/(win|dos)/linux/g; #just another fixed pain in the (gl)ass

  11. #11
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, hierachisch ist so eine Sache.

    Wenn man sich auf Gruppierungen wie in INI-Style Configfiles beschränkt, wird es einfacher und man kann eben auch diese Art von Format benutzen.

    Baumartig geht zwar in XML ziemlih gut, in anderen Formaten muss man aber tricksen und das wird meistens ein Hack.

    Außerdem braucht man nicht sehr oft diese zusätzlichen Ebenen, meistens ist es da sinnvoller, diese Untermengen in eigene Bereiche zu speichern.

    Vielleicht können wir uns da einigen?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  12. #12
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    68
    Ja. Hierachisch ist gerade im Hinblick auf relationale Datenbanken oder bene auch die erwähnten Ini-Dateien nicht leicht zu bewerkstelligen. Eine "QConfig"-Klasse welche flache Strukturen behandelt ist den auch vergleichsweise einfach. Nur wie soll man da strukturierte Daten ablegen?
    Manche Systeme versuchen die Hierachie aufzubrechen und in eine flache Struktur zu packen - wohl die beste Alternative, auch wenn das sicherlich zu einigen hacks führen würde. Eine flexible Klasse zu erschaffen, welche das ganze transparent erledigt, dürfte denoch im Bereich des machbaren liegen.
    Ganz interessant fand ich auch den Ansatz der ISA-GmbH. Sie stellen eine Art plattformübergreifende Interpretersprache (native Executables können auch erzeugt werden) zur Verfügung. Das besondere ist, dass es dieser Möglich ist, instanziierte Objekte komplett abzuspeichern und bei Bedarf wieder herzustellen.

    aber sicherlich kann man sich da einigen :-)
    s/(win|dos)/linux/g; #just another fixed pain in the (gl)ass

  13. #13
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Warum fangen wir nicht erst mal klein an?
    INI-Style & XML als ersten Step ... da das ganze ja OpenSource ist, kann ja dipesh seine Objektstrukturen einbauen
    Bodo
    Systemadmistration UNIX

  14. #14
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von dipesh
    Ja. Hierachisch ist gerade im Hinblick auf relationale Datenbanken oder bene auch die erwähnten Ini-Dateien nicht leicht zu bewerkstelligen. Eine "QConfig"-Klasse welche flache Strukturen behandelt ist den auch vergleichsweise einfach. Nur wie soll man da strukturierte Daten ablegen?
    Welche Form strukutrierter Daten schwebt dir da vor?


    Das besondere ist, dass es dieser Möglich ist, instanziierte Objekte komplett abzuspeichern und bei Bedarf wieder herzustellen.
    Binärs Marshalling wäre nicht so ein Problem.
    QDataStream macht das ziemlich leicht, der kann schon alle Grundtypen, man mus für zusammengesetze Objekte nur mehr Stream Operatoren zur Verfügung stellen.

    Ich denke, wir machn zuerst mal ein INI Backend, die anderen Formate flexibler un dürften weniger Einschränkungen haben, als INI.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  15. #15
    Registrierter Benutzer
    Registriert seit
    25.11.2002
    Beiträge
    68
    @TheDodger
    Liebend gerne. War ja auch nicht die Rede davon das Haus samt Dach mit einr Handbewegung aufbauen zu wollen. Nur sollte man sich bei dem Design klar sein, was künftig noch einfliessen könnte um dann nicht zu spät zu bemerken, dass eine Pyramide ein Dach so leicht nicht tragen kann

    @anda_skoa
    s.o. Zunächst lediglich hierachisch strukturierte Daten in Form der Standardtypen (QColor, QString, int, bool, etc.).
    Unter binäres (un)marshalling kann ich mir soviel nicht vorstellen. Denke aber auch, dass solch "Präsentationskonversationscode" etwas den Rahmen sprengt Auf der anderen Seite könnte man sich ja eine Menge bei den DCOP-Funktionalitäten abgucken - die nutzen wohl auch QDataStream um Objekte zu serialisieren.

    Ini _und_ XML? :-)
    Geändert von dipesh (03-08-2003 um 12:53 Uhr)
    s/(win|dos)/linux/g; #just another fixed pain in the (gl)ass

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •