c – QGridLayout中的行大小一致
我有一个像这样的对话框:
除了标题之外,每个组件的属性都设置为默认值.我希望包含label_3的行与其他三行的高度相同(并且要扩展的底部行占用剩余空间,如图所示,要清除).问题是复选框的高度与文本框的高度不同,因此行的高度不同.根据Designer的说法,在上面的图片中,label_1和朋友的高度为20,而label_3的高度为13.以下任何一种尝试都没有正常工作: >使用QGridLayout的layoutRowStretch属性搞乱无效. ui->label_3->setFixedHeight(ui->label_2->height()); 产生不正确的结果: 调试显示构造函数中的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()的最大值,并将其设置为两个小部件的最小高度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |