如何获得QVBoxLayout合同QDialog时,删除子布局
How to get QVBoxLayout to contract QDialog when removing child layouts?
我有一个QDialog与QVBoxLayout控制其高度。
这个主QVBoxLayout由一个或多个QVBoxLayout子控件组成,后面跟着一些其他小部件。当我添加额外的QVBoxLayout子控件(和/或较低的小部件)时,对话框会扩展以容纳它们——正如您所期望的,也是我想要的。
然而,当我从父QVBoxLayout中删除QVBoxLayout的子元素时,对话框的大小并没有被调整到等于被删除的QVBoxLayout的大小——它只是保持相同的大小,只是有难看的大空白区域。
如何在QVBoxLayout/QDialog中实现正确的动态行为,以便在从QVBoxLayout中删除子组件时正确调整对话框的大小?
确保您调用了mainLayoutPtr->setSizeConstraint(QLayout::SetFixedSize)
(这也将使对话框不能由用户调整大小,但当小部件隐藏/显示时,它将能够适当地调整大小)
如果你不想让对话框不可调整大小,你可以在任何子元素被删除后手动调整它的大小:
QApplication::processEvents();
dialog->resize(dialog->sizeHint());
QWidget::adjustSize()
是您正在寻找的:
调整小部件的大小以适合其内容。
此函数使用sizeHint(),如果它是有效的,即,大小提示的宽度和高度>= 0。否则,它将为覆盖所有子部件(所有子部件矩形的并集)的子矩形设置大小。
对于windows,屏幕尺寸也被考虑在内。如果sizeHint()小于(200,100)并且大小策略正在扩展,则窗口将至少为(200,100)。窗口的最大尺寸是屏幕宽度和高度的2/3。
Docs - http://doc.qt.digia.com/4.7/qwidget.html#adjustSize
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 如何使用C/C++在MacOSX中获得键盘布局
- 删除指向指针的指针是运行时错误吗
- 如何从布局中删除多行?
- 如何从主布局中删除所有项目
- Qt 删除嵌套布局
- 从矢量和 QVBox布局中删除
- 如何获得QVBoxLayout合同QDialog时,删除子布局
- 在不删除部件的情况下清除布局