如何在Qt中以编程方式调整分割窗口部件大小?

8

我使用 QSplitter 在一些小部件旁边放置其他小部件。

作为一个用户,我可以通过拖动分隔条来调整这些小部件的大小。

作为一个程序员,我不知道如何精确指定此时需要什么宽度和高度。

这是我的原始状态(通过不同的伸缩调整)。 Original state

我尝试使用 setFixedSize(),但在调用之后,用户就不能再自己调整小部件的大小了(这绝对是正确的行为,因为大小被“固定”了)。 enter image description here

如果我使用 resize(),它的影响几乎没有。小部件的大小被调整了,但是(!)不正确,并且(!)当我再次开始拖动小部件时,它会回到初始状态。 enter image description here

有没有办法在代码中正确地调整左侧小部件的大小? 我不想使用固定大小,但是如您所见,resize() 的效果不佳。 那我该怎么办?

1个回答

14

QSplitter有一个方法QSplitter::setSizes(QList<int>),其中列表中的每个条目是从左到右或从上到下的小部件的像素大小。该方法不需要您知道确切的宽度,它仍然可以使用猜测的大小。

例如,我使用此功能将用户定义的大小(通过QSplitter::sizes()获得)存储在程序关闭时的QSettings实例中,并在再次启动软件时重新应用它们。如果由于某种原因未设置它们,则只需将总体宽度除以分裂器中的小部件数即可作为初始状态运行良好。


非常感谢。这正是我所需要的。我浪费了大约两天的时间自己寻找方法,但你帮了我很多。谢谢。 - John Smith

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