如何设置QDockWidget的初始宽度?
我已经实现了sizeHint函数,但下一步是什么?
文档QDockWidget
说:
QDockWidget充当其子窗口小部件的包装器,使用setWidget()进行设置.应在子窗口小部件中实现自定义大小提示,最小和最大大小和大小策略.QDockWidget将尊重它们,调整自己的约束以包含框架和标题.不应该在QDockWidget本身上设置大小约束,因为它们会根据它停靠的方式而改变; 停靠的QDockWidget没有框架和较小的标题栏.
因此,大小提示取自您在dock小部件中放置的任何内容.你试过设定QDockWidget
孩子的大小吗?
但是,我同意Marius的观点,最好的办法是QSettings
在应用程序启动时使用保存和恢复所有停靠窗口的宽度.看看QMainWindow::saveState
除了从saveState
单个函数而不是单个函数获取数据之外,我的保存函数看起来与Marius给出的非常相似.
如果您希望它具有与上次运行程序时相同的宽度,则应查看设置.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();
}