[英]Consistent row sizes in a QGridLayout
我有这样一个对话框设置:
除标题外,每个组件的属性均设置为其默认值。 我希望包含label_3
的行与其他三行的高度相同(最下面的一行将被扩展以占用剩余空间,如图所示)。 问题在于该复选框与文本框的高度不同,因此该行具有不同的高度。 根据Designer的说法,在上图的label_1
,朋友的高度为20, label_3
高度为13。
layoutRowStretch
的财产QGridLayout
没有效果。 设置高度以匹配构造函数中其他标签高度之一,例如:
ui->label_3->setFixedHeight(ui->label_2->height());
产生不正确的结果:
调试显示,构造函数中的label_2->height()
为30 ,而不是设计器中报告的20,因此label_3
的行结尾太大。 大概是因为此时尚未显示对话框,所以尚未布置组件。
我没主意了。 不涉及硬编码大小的最干净方法是什么?
上面示例的Qt5项目在这里 。
如果没有手动设置大小,我看不到任何干净的方法。
但是,根据我刚刚在Qt5.5中尝试过的内容,在绘制之前设置了QLineEdit的minimumSizeHint(具有您在QtDesigner中看到的默认大小),因此我能够在Dialog构造函数中设置QCheckBox的最小大小。
ui->checkBox->setMinimumHeight(ui->lineEdit->minimumSizeHint().height());
如果我在QLineEdit上手动设置了minimumHeight,这会出错,因为minimumSizeHint并未更改,但是使用两者中的最大值是可行的:
ui->checkBox->setMinimumHeight(qMax(ui->lineEdit->minimumSizeHint().height(),
ui->lineEdit->minimumSize().height()));
编辑 :如果OS主题的复选框的高度大于行编辑的高度,则可以使用minimumSizeHint().height()
的最大值并将其设置为两个小部件的minimum-height。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.