繁体   English   中英

QGridLayout中一致的行大小

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM