PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QSettings



Kirsche
23-05-2005, 17:31
Hallo Leute,

ich habe Probleme mit QSettings bzw. QTextStream. Ich möchte beim Beenden des Programmes speichern, wo sich die Toolbars und Dockwindos befinden. In der Qt-Hilfe habe ich Folgendes gefunden:

QTextStream & operator<< ( QTextStream & ts, const QMainWindow & mainWindow )
Writes the layout (sizes and positions) of the dock windows in the dock areas of the QMainWindow mainWindow, including Minimized and TornOff dock windows, to the text stream ts.
This can be used, for example, in conjunction with QSettings to save the user's layout when the \mainWindow receives a closeEvent.
See also operator>>() and closeEvent().
QTextStream & operator>> ( QTextStream & ts, QMainWindow & mainWindow )
Reads the layout (sizes and positions) of the dock windows in the dock areas of the QMainWindow mainWindow from the text stream, ts, including Minimized and TornOff dock windows. Restores the dock windows and dock areas to these sizes and positions. The layout information must be in the format produced by operator<<().
This can be used, for example, in conjunction with QSettings to restore the user's layout.

Das habe ich versucht, aber bei mir klappt es nicht.

Mein Code:

Beim Speichern:
QString s;
QTextStream ts ( s, IO_ReadWrite );
operator<< ( ts, this );
settings.writeEntry( "/toolbars/file/area", s );

Beim Laden:
QString s;
s = settings.readEntry( "/toolbars/file/area", "Qt::DockTop" );
QTextStream ts ( s, IO_ReadWrite );
operator>> (ts, this );

Es lässt sich gar nicht erst kompilieren. Fehlermeldung:
'>>' : Durch keine der 24 Ueberladungen kann Parameter 1 vom Typ 'class QTextStream' konvertiert werden

Dabei habe ich es so gemacht, wie es in der Hilfe steht. Oder nicht? :confused:

Vielen Dank

anda_skoa
23-05-2005, 17:50
ts << *this;

und


ts >> *this;


Die Streamoperatoren sind binäre Operatore, haben also zwei Operanden, jeweils links und rechts.
Die Notation als Funktion hat dann den linken Operand als ersten Parameter und den rechten Operand as zweiten Parameter und das Resultat ist das was bei der Auswertungen des Operanden "übrigbleibt", d.h in diesem Fall wieder der Stream, damit man sowas machen kann



stream << wert1 << wert2;


Ciao,
_

Kirsche
23-05-2005, 17:59
Hallo anda_skoa,

vielen, vielen Dank. Es klappt! Mein Fehler war, dass ich this statt *this geschrieben habe.

Bis zum nächsten Problem :rolleyes: ,