QSettings auslesen

Alles rund um die Programmierung mit Qt
Antworten
law.skynet
Beiträge: 32
Registriert: 17. April 2007 23:01

QSettings auslesen

Beitrag von law.skynet »

ich habe ein problem mit qsettings.

ich habe mir eine settingsmanager klasse gschrieben:

Code: Alles auswählen

.....

QString SettingsManager::readSettings()
 {
    return "foobar";
}

....
in meiner mainwindow klasse lese ich den wert dann aus.

Code: Alles auswählen

......
SettingsManager settingsManager;

QString test;

test = settingsManager.readSettings();
qDebug() << "dbg()" << test;

das funktioniert auch. aber wenn ich readSettings auf folgendes ändere. bekomme ich einen segfault.

Code: Alles auswählen

QString SettingsManager::readSettings()
 {
    return settings->value("setting1").toString();
}
warum funktioniert das nicht? ich habe einfach keine ahnung mehr....

habe soeben herausgefunden, dass es in der main() funktion (in main.cpp) ohne probleme funktioniert.
caligano
Beiträge: 126
Registriert: 19. August 2006 15:33

Beitrag von caligano »

Ist der Pointer settings in der Klassendeklaration der Klasse SettingsManager global deklariert? Wohl eher nicht ...
law.skynet
Beiträge: 32
Registriert: 17. April 2007 23:01

Beitrag von law.skynet »

settings ist in der klasse SettingsManager vi a header file deklariert. und gibt auch einen string zurück.

Code: Alles auswählen

...
class QSettings;

class SettingsManager
{
    public:
    QSettings *settings;
....
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

und du hast irgendwo im SettingsManager auch

Code: Alles auswählen

settings = new QSettings( ... );
stehen?
law.skynet
Beiträge: 32
Registriert: 17. April 2007 23:01

Beitrag von law.skynet »

NoobSaibot hat geschrieben:und du hast irgendwo im SettingsManager auch

Code: Alles auswählen

settings = new QSettings( ... );
stehen?
das war der richtige hinweis! danke.

ich habe settings in einer funktion aufgerufen und nicht gleich beim erstellen der klasse!

vielen dank noch einmal!
Antworten