Qt - 如何在容器上设置最小大小,使其不会扭曲子项



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

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

但是,我还需要在此容器上设置最小大小,以便它不会缩小太多。也就是说,容器的最小大小应为: max(my_minimum_size, contents_size) .这就是它变得有问题的地方。

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

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

更新:这个Qt Designer UI文件准确地显示了我的意思。容器上设置了一个minimumSize,调整其大小会使按钮失真。

我在Qt中心得到了答案:

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

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

像这样:

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

最新更新