使用Qt调整子部件大小与父部件

3
我在UI设计器中制作了一个自定义小部件,它由主窗口组成(我将其调整为700宽度和30高度),其中包含一个高度为30,宽度为770的QLineEdit,以及旁边一个[X]按钮,其宽度为30,高度为30。我希望当它们后面的主窗口被调整大小时,QLineEdit也会随之调整大小(水平方向),但按钮始终保持在其旁边。问题是现在当我调整大小时,按钮被遮挡了。

1
你需要使用布局。 - undefined
@tmoreau 我在上面拖了一个水平布局,结果一切变得混乱 - 我无法选择它下面的小部件,所以我不得不将它们移除并添加新的小部件到布局的上方。而且一旦我把它们添加到布局上方后,就无法再调整它们的大小了。 - undefined
1个回答

3

首先尝试将一个QHBoxLayout添加到自定义小部件中,然后将QLineEdit和QPushButton添加到该布局中。

布局可确保小部件正确排序,并随主窗口小部件的调整而自动调整大小。

还值得阅读“将小部件添加到布局”一节,详见布局管理文档


布局在属性窗口中没有任何调整大小的选项,我必须手动拖动它吗?而且其中的小部件也无法调整大小,选项被禁用了。 - undefined
你有没有尝试根据我指向的文档部分来调整拉伸因子?玩一下看看效果如何? - undefined
好的,我已经做了所有的事情,在UI设计师中看起来都没问题,但是当我运行程序时,小部件被分配了一些空白空间,但是它的内容没有显示出来,只有一个空白空间被推开了一点。我检查了MOC代码,一切看起来都很好,它创建了小部件,将它们添加到布局中,将布局添加到主小部件中,但是即使在调用show()并尝试调整大小后,它仍然不显示。 - undefined
这个问题不容易解决,没有看到代码的情况下。请随意编辑您的原始问题,并展示给我们相关部分的代码。 - undefined
看起来MOC失败了,当我打开生成的文件时,我注意到它创建了一些额外的小部件,这些小部件位于顶部小部件和包含其他子元素的布局之间。我简单地绕过了中间的小部件(将其删除),并将布局设置为顶部小部件,现在它可以正常工作了。 - undefined
太好了,它起作用了!你能接受答案来关闭问题吗? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接