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

How to resize splitter widgets programmatically in Qt?

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

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

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

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

我尝试使用 setFixedSize(),但在该调用之后,用户无法再自行调整小部件的大小(这绝对是正确的行为,因为大小变为 'fixed')。

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

有什么方法可以正确调整代码中左侧小部件的大小吗?我不想有固定大小,但 resize() 不能正常工作,如您所见。那我该怎么办呢?

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

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