如何防止QGridLayout中的小部件重叠?

时间:2012-04-14 17:06:54

标签: python pyqt

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

当窗口能够占用尽可能多的空间时,不会出现此问题。但是当我完全限制窗口的大小时,此列表中的元素如下所示:

QGridLayout with vertically restricted elements

所以我的问题是,我如何确保QGridLayout中的所有qwidgets都占用了他们需要的空间?

修改 按照@Avaris的建议,我尝试为setMinimumSize()(所有6行)中的每个小部件调用QGridLayout,并且可见元素看起来更好(感谢@Avaris!)。然而,现在当我导致验证错误时,错误本身(红色QLabel)放在其他小部件上。我可以强制QGridLayout不重叠吗?

现在看来是这样的: enter image description here

1 个答案:

答案 0 :(得分:0)

在搜索解决方案时,我发现something in the TrollTech archives支持@Avaris关于设置小部件最小大小的想法。帖子建议为QGridLayout中的每个小部件设置最小大小。

我的实现看起来像这样,因为我循环遍历要添加到我的QGridLayout的所有元素:

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

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