1

我有一个QGridLayout六行中有许多小部件。第 1、3 和 5 行包含 a QLabel、 aQLineEdit和 aQPushButton打开文件选择对话框。第 2、4 和 6 行包含QLabel用于向用户显示验证错误的 a。错误隐藏在下图中。

当窗口能够占用尽可能多的空间时,不会出现此问题。但是当我完全限制窗口的大小时,这个列表中的元素看起来像这样:

具有垂直限制元素的 QGridLayout

所以我的问题是,如何确保 QGridLayout 中的所有 qwidget 可以占用所需的空间?

编辑: 根据@Avaris 的建议,我尝试调用(所有 6 行)setMinimumSize()中的每个小部件,QGridLayout可见元素看起来好多了(谢谢,@Avaris!)。然而现在,当我导致验证错误时,错误本身(红色QLabel)覆盖在其他小部件上。我可以强制 QGridLayout 不重叠吗?

这是它现在的样子: 在此处输入图像描述

4

1 回答 1

1

在寻找解决方案时,我在 TrollTech 档案中发现了一些支持 @Avaris 关于设置小部件最小尺寸的想法的东西。该帖子建议为 QGridLayout 中的每个小部件设置最小尺寸。

当我遍历要添加到 QGridLayout 的所有元素时,我的实现看起来像这样:

widget = QtGui.QWidget()
hint = widget.sizeHint()
if hint.isValid():
    widget.setMinimumSize(hint)

提示的有效性因使用的布局而异,但当我使用 QGridLayout 时,小部件尺寸提示似乎总是有效的。

于 2012-05-30T22:50:13.730 回答