如何在Qt中以编程方式调整拆分器小部件的大小?

时间:2015-08-12 15:24:13

标签: c++ qt resize qsplitter

我使用QSplitter并排放置一些小部件。

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

作为一名程序员,我不知道如何准确指定目前我想要的宽度和高度。

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

我尝试使用setFixedSize(),但在该调用之后,用户不能再自行调整窗口小部件的大小(这绝对是正确的行为,因为尺寸得到修复' )。 enter image description here

如果我使用resize(),它几乎没有效果。小部件调整大小,但(!)不正确和(!)当我再次开始拖动时,小部件获得其初始状态。 enter image description here

有没有办法正确调整代码中左侧窗口小部件的大小?我不想要固定大小,但resize()无法正常工作,如您所见。那我该怎么办?

1 个答案:

答案 0 :(得分:7)

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

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