【发布时间】:2019-02-07 14:13:23
【问题描述】:
我有一个 QWidget 容器(实际上是一个 QFrame),里面有一些小部件。此容器的内容(子窗口小部件的数量和/或大小)可能会动态变化。容器本身位于滚动区域中。
通常,容器会根据其内容适当调整大小(增大或缩小)。这行得通。
不过,我还需要在这个容器上设置一个最小尺寸,这样它就不会缩小太多。也就是说,容器的最小尺寸应该是:
max(my_minimum_size, contents_size)。
这就是问题所在。
如果我使用
container->setMinimumSize(200, 200);
并且内容的大小大于 (200, 200),容器仍然可以调整为 (200, 200)(与之前不同),其内容大小被忽略并被扭曲或截断。
有没有办法解决这个问题?我正在使用 Qt 5.9。
更新:这个Qt Designer UI file 正是我的意思。在容器上设置了minimumSize,调整其大小会使按钮变形。
【问题讨论】:
-
这可能就是您要寻找的答案:stackoverflow.com/a/21265287/1329652
-
@KubaOber 谢谢,但我不这么认为。另外,我根本不想限制容器的最大尺寸。事实上,我希望它尽可能地增长。
-
该答案中没有任何内容限制容器大小。事实上,解决的问题是如何确保容器总是尽可能大,而不是更大,以及如何将它传递给滚动视图。试试这个例子,它有效。
-
@KubaOber “没有更大的” - 就是这样,我希望它尽可能地增长。我只希望限制它,使其始终至少具有某个 (w,h) 大小,同时不扭曲其子级。您使用 QLayout::SetMinAndMaxSize,这限制了它的增长。您也从不指定任何定义的尺寸,我需要 200x200!
-
既然容器在滚动区域,它必须有一个确定的大小:它不能任意增长。滚动区域中没有“尽可能大”的概念:事物可以随心所欲,受小部件系统的限制(2^16-1 限制?)。因此,在我们进一步讨论之前,您必须明确“尽可能多地增长”的含义。