QGridLayout 中一致的行大小

Consistent row sizes in a QGridLayout

我有一个这样设置的对话框:

除标题外,每个组件的属性都设置为默认值。我希望包含 label_3 的行与其他三行的高度相同(为了清楚起见,底部的行将展开以占用剩余的 space,如图所示)。问题是复选框与文本框的高度不同,因此该行的高度不同。根据设计师的说法,在上图中,label_1 和朋友的身高为 20,而 label_3 的身高为 13。以下 None 的尝试非常正确:

我没主意了。不涉及硬编码大小的最干净的方法是什么?

上例的 Qt5 项目是 here.

如果不手动设置大小,我看不出有什么干净的方法可以做到这一点。

然而,根据我刚刚在 Qt5.5 中的尝试,QLineEdit 的 minimumSizeHint 是在绘制之前设置的(使用您在 QtDesigner 中看到的默认大小),因此我能够设置 QCheckBox 的最小大小在 Dialog 构造函数中。

ui->checkBox->setMinimumHeight(ui->lineEdit->minimumSizeHint().height());

如果我在 QLineEdit 上手动设置 minimumHeight,这会出错,因为 minimumSizeHint 没有改变,但使用两者中的最大值是可行的:

ui->checkBox->setMinimumHeight(qMax(ui->lineEdit->minimumSizeHint().height(),
                                    ui->lineEdit->minimumSize().height()));

Edit:在 OS 主题的情况下,复选框的高度大于行编辑,您可以使用两者的最大值 minimumSizeHint().height() 并将其设置为两个小部件的最小高度。