如何设置QDockWidget的初始宽度?我已经实现了sizeHint函数,但接下来呢?
wnrlj8wa1#
QDockWidget的文档说:QDockWidget充当其子小部件的 Package 器,使用setWidget()设置。自定义大小提示、最小和最大大小以及大小策略应在子小部件中实现**。QDockWidget将尊重它们,调整自己的约束以包含框架和标题。不应在QDockWidget本身设置大小限制,因为大小限制会根据QDockWidget是否停靠而改变;停靠的QDockWidget没有框架和较小的标题栏。所以大小提示是从你放在dock小部件中的任何东西中获取的。你试过设置QDockWidget的子进程的大小吗?但是,我同意Marius的观点,最好的做法可能是在应用程序启动时使用QSettings保存和恢复所有停靠窗口的宽度。看看QMainWindow::saveState。除了从saveState而不是从单个函数获取数据之外,我的保存函数看起来与Marius给出的函数非常相似。
QDockWidget
QSettings
saveState
w8f9ii692#
如果你想让它的宽度和上次程序运行时的宽度一样,你应该查看设置。Qt文档中有一个关于如何使用设置here的示例。我是这样做的:
void Application::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 Application::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(); }
2条答案
按热度按时间wnrlj8wa1#
QDockWidget的文档说:
QDockWidget充当其子小部件的 Package 器,使用setWidget()设置。自定义大小提示、最小和最大大小以及大小策略应在子小部件中实现**。QDockWidget将尊重它们,调整自己的约束以包含框架和标题。不应在QDockWidget本身设置大小限制,因为大小限制会根据QDockWidget是否停靠而改变;停靠的QDockWidget没有框架和较小的标题栏。
所以大小提示是从你放在dock小部件中的任何东西中获取的。你试过设置
QDockWidget
的子进程的大小吗?但是,我同意Marius的观点,最好的做法可能是在应用程序启动时使用
QSettings
保存和恢复所有停靠窗口的宽度。看看QMainWindow::saveState。除了从
saveState
而不是从单个函数获取数据之外,我的保存函数看起来与Marius给出的函数非常相似。w8f9ii692#
如果你想让它的宽度和上次程序运行时的宽度一样,你应该查看设置。Qt文档中有一个关于如何使用设置here的示例。
我是这样做的: