Frage

Wie tun ich stellen Sie die ursprüngliche Breite des QDockWidget?

Ich habe implementiert, die sizeHint Funktion aber was kommt als Nächstes?

War es hilfreich?

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();

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top