Qt - 如何在容器上设置最小尺寸以免扭曲儿童

Qt - How to set minimum size on a container so it doesn't distort children

我有一个 QWidget 容器(实际上是一个 QFrame),里面有一些小部件。此容器的内容(子小部件的数量 and/or 大小)可能会动态变化。容器本身位于滚动区域中。

通常,容器会根据其内容适当调整大小(增大或缩小)。这行得通。

但是,我还需要为此容器设置一个最小尺寸,这样它就不会缩小太多。也就是说,容器的最小尺寸应该是: max(my_minimum_size, contents_size)。 这就是问题所在。

如果我用 container->setMinimumSize(200, 200); 并且内容的大小大于 (200, 200),容器仍然可以调整为 (200, 200)(与之前不同),其内容的大小将被忽略并被扭曲或切掉。

有办法解决这个问题吗?我正在使用 Qt 5.9。

更新:Qt Designer UI file 正好表达了我的意思。在容器上设置了 minimumSize,调整它的大小会使按钮变形。

我在 Qt 中心得到了答案:

https://www.qtcentre.org/threads/70015-Set-minimum-size-of-a-container-without-distorting-its-children

  1. 创建 QFrame
  2. 的子class
  3. 重写 minimumSizeHint() 以便它从基础 class 中获取值并扩展它。

类似于:

QSize MyFrame::minimumSizeHint() const override
{
    const QSize baseSize = QFrame::minimumSizeHint();
    return baseSize.expandedTo(QSize(200, 200));
}