Position von Toolbars speichern/wieder herstellen

Alles rund um die Programmierung mit Qt
Antworten
loh.tar
Beiträge: 14
Registriert: 2. Februar 2007 14:17

Position von Toolbars speichern/wieder herstellen

Beitrag von loh.tar »

*seufz* bin mal wieder zu blöd und Ihr meine letzte Hoffnung.

Ich finde kein Beispiel wo gezeigt wird wie man die Position einer QToolbar speichert und wieder herstellt.

Ich versuchte es mit pos() aber das liefert meist nur 0,0 egal wo ich die Toolbar hinschiebe :?

In der Trolltech Doku http://doc.trolltech.com/3.3/qdockarea. ... ator-lt-lt fand ich dann den lapidaren Hinweis

QTextStream & operator<< ( QTextStream & ts, const QDockArea & dockArea )
Writes the layout of the dock windows in dock area dockArea to the text stream ts.

Nur da blick ich nicht durch. Wie komm ich da an einen String den ich in meinem rcfile abspeichern kann?
Ob das überhaupt der richtige Weg ist weiß ich natürlich auch nicht...

Danke schon mal fürs lesen
Lothar
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

QByteArray QMainWindow::saveState ( int version = 0 ) const
bool QMainWindow::restoreState ( const QByteArray & state, int version = 0 )
loh.tar
Beiträge: 14
Registriert: 2. Februar 2007 14:17

Beitrag von loh.tar »

ähm...kann es sein dass saveState erst in Qt4 vorhanden ist?

es taucht hier nämlich nicht auf
http://doc.trolltech.com/3.3/qmainwindow-members.html
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Axo, dann probiers mal so:

Code: Alles auswählen

QString data;
QTextStream stream(&data, IO_WriteOnly);
stream<<dockWidget;

ungetestet...
loh.tar
Beiträge: 14
Registriert: 2. Februar 2007 14:17

Beitrag von loh.tar »

nnja, vielen Dank.
Widererwarten habe ich doch noch etwas gefunden was sehr genau Deinem dort entspricht.
http://www.sourcentral.org/man/SUSE102/3+QMainWindow

es werden zwar unterschiedliche Werte erzeugt wenn man die Toolbars (zwei an der Zahl) verschiebt nur funktioniert das mit dem Laden/Wiederherstellen nicht. Die zeigen sich unbeeindruckt an immer den selben "default" Stellen.

Wenn ich mir die erstellte Datei (bzw den String) angucke, hab ich das Gefühl dass dort noch einige Infos fehlen. Eine ID oder der Name der Toolbar.

Hier mal der komplette Inhalt zweier erstellter Dateien. Die erste wie sie erstellt wird wenn man nicht verschoben hat...

Code: Alles auswählen



,,
[,0,0,-1,-1,1][,0,0,-1,-1,1]






...und die zweite nach einer umplazierung

Code: Alles auswählen







,
[,-42,0,-1,-1,1]
,
[,-90,0,-1,-1,1]

Nach etwas rumprobieren fällt mir auf, dass immer 12 Zeilen erstellt und die Werte in verschiedenen Zeilen eingetragen werden. Was das abspeichern als String in dem rcfile auch nicht gerade erleichtert...

Noch eine Idee was ich vergessen haben könnte?

axo...momentan sieht das Laden so aus

Code: Alles auswählen

QFile file("testspeicherung");
if ( file.open( IO_ReadOnly ) ) 
{ 
  QTextStream stream( &file );
  stream >> *this;
  file.close();
}
was am Ende des MainWindow Constructors gemacht wird; nachdem also alle anderen Lade/Erstell-Vorgänge erledigt sind.
Antworten