Wie kann ich die anfängliche Breite eines QDockWidgets festlegen?
Ich habe die sizeHint-Funktion implementiert, aber was nun?
Wie kann ich die anfängliche Breite eines QDockWidgets festlegen?
Ich habe die sizeHint-Funktion implementiert, aber was nun?
Die Dokumentation für QDockWidget
sagt:
Ein QDockWidget fungiert als Wrapper für sein Child-Widget, das mit setWidget() gesetzt wird. Benutzerdefinierte Größenhinweise, minimale und maximale Größen und Größenrichtlinien sollten im untergeordneten Widget implementiert . QDockWidget respektiert sie und passt seine eigenen Beschränkungen an, um den Rahmen und den Titel einzuschließen. Größenbeschränkungen sollten nicht für das QDockWidget selbst festgelegt werden Denn sie ändern sich je nachdem, ob es angedockt ist; ein angedocktes QDockWidget hat keinen Rahmen und eine kleinere Titelleiste.
Der Hinweis auf die Größe wird also von dem übernommen, was Sie in das Dock-Widget eingeben. Haben Sie versucht, die Größe des QDockWidget
das Kind?
Aber ich stimme Marius zu, am besten ist es wahrscheinlich, wenn man die QSettings
zum Speichern und Wiederherstellen der Breite aller Dockfenster beim Start der Anwendung. Werfen Sie einen Blick auf QMainWindow::saveState
Abgesehen von der Beschaffung der Daten von saveState
und nicht aus einzelnen Funktionen, sieht meine Speicherfunktion sehr ähnlich aus wie die von Marius beschriebene.
Wenn Sie möchten, dass es die gleiche Breite wie bei der letzten Ausführung des Programms hat, sollten Sie sich die Einstellungen ansehen. Die Qt 4.4 Dokumentation hat ein Beispiel, wie man Einstellungen verwendet aquí .
So habe ich es gemacht:
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();
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.