我有一个QGridLayout
,其中包含六行中的多个小部件。第1,3和5行包含QLabel
,QLineEdit
和QPushButton
,可打开文件选择对话框。第2,4和6行包含QLabel
,用于向用户显示验证错误。错误隐藏在下面的图片中。
当窗口能够占用尽可能多的空间时,不会出现此问题。但是当我完全限制窗口的大小时,此列表中的元素如下所示:
所以我的问题是,我如何确保QGridLayout中的所有qwidgets都占用了他们需要的空间?
修改
按照@Avaris的建议,我尝试为setMinimumSize()
(所有6行)中的每个小部件调用QGridLayout
,并且可见元素看起来更好(感谢@Avaris!)。然而,现在当我导致验证错误时,错误本身(红色QLabel
)放在其他小部件上。我可以强制QGridLayout不重叠吗?
现在看来是这样的:
答案 0 :(得分:0)
在搜索解决方案时,我发现something in the TrollTech archives支持@Avaris关于设置小部件最小大小的想法。帖子建议为QGridLayout中的每个小部件设置最小大小。
我的实现看起来像这样,因为我循环遍历要添加到我的QGridLayout的所有元素:
widget = QtGui.QWidget()
hint = widget.sizeHint()
if hint.isValid():
widget.setMinimumSize(hint)
提示的有效性因使用的布局而异,但是当我使用QGridLayout时,窗口小部件大小提示似乎总是有效。