添加新部件时如何缩小 QSplitter 中的第一个部件?

How to shrink first widget in QSplitter when adding new one?

我有一个 QSplitter,它有一个大部件,后面跟着几个小部件。添加新的小部件时,即使大的 space 仍然比其 sizeHint() 多得多 sizeHint()

,但小的会缩小到低于推荐的 sizeHint()

我可以改变这种行为吗?我是否需要使用 QSplitter::setSizes() 来执行此操作?如果需要,如何检测某个小部件是 added/removed/resized?

我希望小部件可以自由调整大小,因此使用 setFixedHeight() 不是一个可接受的解决方案。

例如,我有两个首选高度为 200 像素的小部件(第一个屏幕截图)。 当我添加第三个时,它需要的高度超过了首选高度,缩小了其他高度,即使它们都可以有它们的首选高度。

尝试QSplitter::setStretchFactor(index, factor);。例如,为第一个小部件设置 factor=0,为其余小部件设置 factor=1。

您可以为 QEvent::LayoutRequest 安装事件过滤器和过滤器来检测某个小部件是 added/removed,尽管它也可以因其他原因被触发。