加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – QGridLayout中的行大小一致

发布时间:2020-12-16 07:20:59 所属栏目:百科 来源:网络整理
导读:我有一个像这样的对话框: 除了标题之外,每个组件的属性都设置为默认值.我希望包含label_3的行与其他三行的高度相同(并且要扩展的底部行占用剩余空间,如图所示,要清除).问题是复选框的高度与文本框的高度不同,因此行的高度不同.根据Designer的说法,在上面的
我有一个像这样的对话框:

enter image description here

除了标题之外,每个组件的属性都设置为默认值.我希望包含label_3的行与其他三行的高度相同(并且要扩展的底部行占用剩余空间,如图所示,要清除).问题是复选框的高度与文本框的高度不同,因此行的高度不同.根据Designer的说法,在上面的图片中,label_1和朋友的高度为20,而label_3的高度为13.以下任何一种尝试都没有正常工作:

>使用QGridLayout的layoutRowStretch属性搞乱无效.
>我不想设置硬编码的固定高度,因为这可能在其他平台或其他主题上运行,因此我想将组件大小推迟到系统默认值.
>将高度设置为与构造函数中的其他标签高度匹配,例如:

ui->label_3->setFixedHeight(ui->label_2->height());

产生不正确的结果:

enter image description here

调试显示构造函数中的label_2-> height()为30,而不是设计器中报告的20,因此label_3的行结果太大.可能这是因为此时尚未显示对话框,因此尚未布置组件.

我没有想法.什么是最干净的方法,也不涉及硬编码大小?

上述示例的Qt5项目是here.

解决方法

如果不手动设置大小,我看不到任何干净的方法.

但是,根据我刚刚在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()));

编辑:如果操作系统主题的复选框高度大于行编辑,则可以使用minimumSizeHint().height()的最大值,并将其设置为两个小部件的最小高度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读