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

时间:2019-02-07 14:13:23

标签: c++ qt layout qt5 qlayout

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

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

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

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

是否可以解决此问题?我正在使用Qt 5.9。

更新:此Qt Designer UI file完全显示了我的意思。在容器上设置了minimumSize,并调整其大小会扭曲按钮。

1 个答案:

答案 0 :(得分:0)

我在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));
}