我有一个QDialog,QVBoxLayout控制它的高度。
这个主要的QVBoxLayout包含一个或多个QVBoxLayout子节点,后跟一些其他小部件。当我添加额外的QVBoxLayout子项(和/或较低的小部件)时,对话框会扩展以适应它们 - 正如您所期望的那样,并且正如我所希望的那样。
但是,当我从父QVBoxLayout中删除QVBoxLayout子项时,对话框的调整大小不会等于已删除的QVBoxLayout的大小 - 它只是保持相同的大小,带有难看的大空白区域。
如何在QVBoxLayout / QDialog中实现正确的动态行为,以便在从QVBoxLayout中删除子组件时正确调整对话框的大小?
答案 0 :(得分:0)
请务必致电mainLayoutPtr->setSizeConstraint(QLayout::SetFixedSize)
(这也会使用户无法调整对话框的大小,但在小工具隐藏/显示时可以正确调整大小)
答案 1 :(得分:0)
如果您不想使对话框不可调整大小,您可以在删除任何子项后手动调整其大小:
QApplication::processEvents();
dialog->resize(dialog->sizeHint());
答案 2 :(得分:0)
QWidget::adjustSize()
:
调整小部件的大小以适合其内容。
如果此函数有效,则使用sizeHint(),即大小提示的宽度和高度>> 0.否则,它将大小设置为覆盖所有子窗口小部件的子矩形(所有子窗口小部件的并集)矩形)。
对于Windows,还会考虑屏幕尺寸。如果sizeHint()小于(200,100)并且大小策略正在扩展,则窗口将至少为(200,100)。窗口的最大尺寸是屏幕宽度和高度的2/3。