QDockWidget начальная ширина
Как мне установить начальную ширину QDockWidget?
Я реализовал функцию sizeHint, но что дальше?
2 ответа
Документация для QDockWidget
говорит:
QDockWidget действует как оболочка для своего дочернего виджета, установленного с помощью setWidget(). Настраиваемые подсказки размеров, минимальные и максимальные размеры и политики размеров должны быть реализованы в дочернем виджете. QDockWidget будет уважать их, настраивая свои собственные ограничения, чтобы включить фрейм и заголовок. Ограничения размера не должны быть установлены на самом QDockWidget, потому что они меняются в зависимости от того, установлена ли она на док-станцию; закрепленный QDockWidget не имеет рамки и меньшей строки заголовка.
Таким образом, подсказка о размере берется из того, что вы вставили в виджет-док. Вы пытались установить размер QDockWidget
ребенок?
Но, я согласен с Мариусом, лучше всего использовать QSettings
сохранить и восстановить ширину всех окон док-станции при запуске приложения. Посмотри на QMainWindow::saveState
Помимо получения данных от saveState
В отличие от отдельных функций, моя функция сохранения выглядит очень похоже на ту, которую дал Мариус.
Если вы хотите, чтобы он был такой же ширины, как и в прошлый раз, когда программа работала, вам следует заглянуть в настройки. Документация Qt 4.4 содержит пример того, как использовать настройки здесь.
Вот как я это сделал:
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();
}