当前位置:  开发笔记 > 编程语言 > 正文

QDockWidget的初始宽度

如何解决《QDockWidget的初始宽度》经验,为你挑选了2个好方法。

如何设置QDockWidget的初始宽度?

我已经实现了sizeHint函数,但下一步是什么?



1> David Dibben..:

文档QDockWidget说:

QDockWidget充当其子窗口小部件的包装器,使用setWidget()进行设置.应在子窗口小部件中实现自定义大小提示,最小和最大大小和大小策略.QDockWidget将尊重它们,调整自己的约束以包含框架和标题.不应该在QDockWidget本身上设置大小约束,因为它们会根据它停靠的方式而改变; 停靠的QDockWidget没有框架和较小的标题栏.

因此,大小提示取自您在dock小部件中放置的任何内容.你试过设定QDockWidget孩子的大小吗?

但是,我同意Marius的观点,最好的办法是QSettings在应用程序启动时使用保存和恢复所有停靠窗口的宽度.看看QMainWindow::saveState除了从saveState单个函数而不是单个函数获取数据之外,我的保存函数看起来与Marius给出的非常相似.



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

}


如果您使用QMainWindow来保持停靠的窗口,那么使用saveState和restoreState会更加容易,它会保存所有停靠窗口小部件和工具栏的状态
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有