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 中心得到了答案:
- 创建 QFrame
的子class
- 重写 minimumSizeHint() 以便它从基础 class 中获取值并扩展它。
类似于:
QSize MyFrame::minimumSizeHint() const override
{
const QSize baseSize = QFrame::minimumSizeHint();
return baseSize.expandedTo(QSize(200, 200));
}
我有一个 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 中心得到了答案:
- 创建 QFrame 的子class
- 重写 minimumSizeHint() 以便它从基础 class 中获取值并扩展它。
类似于:
QSize MyFrame::minimumSizeHint() const override
{
const QSize baseSize = QFrame::minimumSizeHint();
return baseSize.expandedTo(QSize(200, 200));
}