QDockWidget anfängliche Breite
-
08-07-2019 - |
Frage
Wie tun ich stellen Sie die ursprüngliche Breite des QDockWidget?
Ich habe implementiert, die sizeHint Funktion aber was kommt als Nächstes?
Lösung
Die Dokumentation für QDockWidget
sagt:
Ein QDockWidget fungiert als wrapper für seine Kind-widget, mit setWidget().Benutzerdefinierte Größe Hinweise, minimum-und maximum-Größen und die Größe sollte sich die Politik die Umsetzung in der Kind-widget.QDockWidget wird Sie respektieren, anpassen Ihre eigenen Einschränkungen zu zählen die Rahmen und Titel. Größe Einschränkungen sollten nicht gesetzt werden, auf der sich QDockWidget, denn Sie verändern sich je nachdem, ob es angedockt ist;ein angedocktes QDockWidget hat keine Rahmen und eine kleinere Titelleiste.
So dass die Größe der Tipp ist entnommen aus dem, was Sie setzen in die dock-widget.Haben Sie versucht, die Größe des QDockWidget
's Kind?
Aber, ich bin einverstanden mit Marius, das beste, was zu tun ist wahrscheinlich zu verwenden QSettings
speichern und wiederherstellen der breiten aller dock-Fenster, wenn die Anwendung gestartet wird.Haben Sie einen Blick auf QMainWindow::saveState
Abgesehen von dem abrufen der Daten von saveState
anstatt aus einzelnen Funktionen, die meine save-Funktion ähnelt sehr der von Marius.
Andere Tipps
Wenn Sie es wünschen, die gleiche Breite wie die gleichen letzten Zeit haben das Programm ausgeführt wurde, sollten Sie in die Einstellungen aussehen. Die Qt 4.4 Dokumentation hat ein Beispiel dafür, wie die Einstellungen verwenden hier .
Dies ist, wie ich es getan haben:
void Applicotion::readSettings() {
QSettings settings("Company Name", "Application Name");
settings.beginGroup("LibraryDock");
libraryDock->setFloating(settings.value("docked").toBool());
libraryDock->resize(settings.value("size", QSize(1, 1)).toSize());
libraryDock->move(settings.value("pos", QPoint(200, 200)).toPoint());
addDockWidget((Qt::DockWidgetArea)settings.value("dockarea", Qt::RightDockWidgetArea).toInt(), libraryDock);
settings.endGroup();
}
void Applicotion::writeSettings() {
QSettings settings("Company Name", "Application Name");
settings.beginGroup("LibraryDock");
settings.setValue("dockarea", dockWidgetArea(libraryDock));
settings.setValue("docked", libraryDock->isFloating());
settings.setValue("size", libraryDock->size());
settings.setValue("pos", libraryDock->pos());
settings.endGroup();
}