Seite 1 von 1

Position von Toolbars speichern/wieder herstellen

Verfasst: 16. März 2007 12:03
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

Verfasst: 16. März 2007 12:20
von upsala

Code: Alles auswählen

QByteArray QMainWindow::saveState ( int version = 0 ) const
bool QMainWindow::restoreState ( const QByteArray & state, int version = 0 )

Verfasst: 16. März 2007 12:39
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

Verfasst: 16. März 2007 17:39
von upsala
Axo, dann probiers mal so:

Code: Alles auswählen

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

ungetestet...

Verfasst: 16. März 2007 20:43
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.