Seite 1 von 1

QSettings und Groups/Keys

Verfasst: 2. Januar 2007 19:59
von QtBerserker
Hallo,

offenbar kann ich wohl die Doku zu QSettings http://doc.trolltech.com/4.2/qsettings.html#childKeys nicht so recht lesen:

Code: Alles auswählen

#include <QApplication>
#include <QSettings>
#include <QStringList>
#include <QtDebug>

int main( int argc,  char* argv[] )
{
    QApplication app( argc,  argv );

    QSettings settings("settings.ini", QSettings::IniFormat);

    settings.beginGroup( "Paths" );
    settings.setValue( "Prefix/1.2.3",  "/path/to" );
    settings.setValue( "Prefix/4.3.2",  "/path/to" );
    settings.endGroup();

    settings.beginGroup( "Paths" );
    QStringList group = settings.childKeys();

    for(int child = 0; child != group.size(); ++child) {
        QString childVersion = group.at(child);
        qDebug() << childVersion;
    }
    settings.endGroup();

    qDebug() << "----------------------";
}
ergibt:
$ make && ./test && cat settings.ini
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o settings.o settings.cpp
g++ -o test settings.o -L/usr/lib -lQtGui -lQtCore -lpthread
----------------------
[Paths]
Prefix\1.2.3=/path/to
Prefix\4.3.2=/path/to
und sollte imo 1.2.3 und 4.3.2 ausgeben; nehme ich childGroups() kommt:
$ make && ./test && cat settings.ini
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o settings.o settings.cpp
g++ -o test settings.o -L/usr/lib -lQtGui -lQtCore -lpthread
"Prefix"
----------------------
[Paths]
Prefix\1.2.3=/path/to
Prefix\4.3.2=/path/to
Ich habe hier libqt 4.2.1-2 (debian/sarge). Habe ich hier einen Bug in Qt? Wer reisst mir das Brett vom Kopf weg?

Viele Grüße
Olaf

Re: QSettings und Groups/Keys

Verfasst: 3. Januar 2007 08:37
von Christian81
QtBerserker hat geschrieben: und sollte imo 1.2.3 und 4.3.2 ausgeben; nehme ich childGroups() kommt:
Laut Doku nicht.
http://doc.trolltech.com/4.2/qsettings.html#beginGroup
Die Group wird nur über beginGroup festgelegt - was innerhalb von setValue angegeben wird interessiert nicht

Code: Alles auswählen

settings.beginGroup( "Paths" );
settings.beginGroup( "Prefix" );
settings.setValue( "1.2.3",  "/path/to" );
settings.setValue( "4.3.2",  "/path/to" );
settings.endGroup();
settings.endGroup();

Verfasst: 3. Januar 2007 18:22
von QtBerserker
Ich bin doch nicht blöd, oder doch? (Besser nicht antworten :oops:)

Code: Alles auswählen

#include <QApplication>
#include <QSettings>
#include <QStringList>
#include <QtDebug>

int main( int argc,  char* argv[] )
{
    QApplication app( argc,  argv );

    QSettings settings("settings.ini", QSettings::IniFormat);

    settings.beginGroup( "Paths" );
    settings.beginGroup( "Prefix" );
    settings.setValue( "1.2.3",  "/path/to" );
    settings.setValue( "4.3.2",  "/path/to" );
    settings.endGroup();
    settings.endGroup();

    settings.beginGroup( "Paths" );
    QStringList group = settings.childGroups();

    for(int child = 0; child != group.size(); ++child) {
        QString childVersion = group.at(child);
        qDebug() << childVersion;
    }
    settings.endGroup();

    qDebug() << "----------------------";
}
ergibt:
$ make && ./tmp && cat settings.ini
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o settings.o settings.cpp
g++ -o tmp settings.o -L/usr/lib -lQtGui -lQtCore -lpthread
"Prefix"
----------------------
[Paths]
Prefix\1.2.3=/path/to
Prefix\4.3.2=/path/to
Hierauf schon :lol:

Grüße & Dank
Olaf