主要问题
如果有额外的空间或没有足够的空间来容纳它们,那么为您的小部件提供默认大小并确保它们收缩、扩展或保持固定的“正确”方法是什么?
我认为 Qt 是如何工作的
阅读 Qt 文档后,大小算法似乎是这样的……布局首先通过 QWidget::sizeHint 方法询问其子项的理想大小。如果布局有额外的空间或没有足够的空间,那么它将根据每个小部件的尺寸策略 (QWidget::sizePolicy)、最小尺寸 (QWidget::minimumSize) 和最大尺寸 (QWidget::maximumSize) 确定要调整哪些小部件.
为什么没有 QWidget::setSizeHint 方法?
如果我的理解接近准确,那么您似乎只需在每个小部件上设置 sizeHint、sizePolicy、maximumSize 和 minimumSize,一切都会正常工作。那么为什么没有 setSizeHint 方法?!?!??!!当然,每次您使用提供您需要的所有功能的小部件(QTableView、QComboBox 等)时,您都可以扩展它并覆盖单个方法,但这听起来绝对荒谬。
我正在解决的尺寸问题之一。
我有一个 QMainWindow,左侧有一个 QDockWidget。QDockWidget 有一个 QTableView。我想让 QDockWidget/QTableView 在启动时占用“合理”的空间,然后用户可以根据自己的喜好调整它的大小。
不幸的是,当应用程序启动时,它给 QDockWidget/QTableView 的空间非常小,以至于它需要一个水平滚动条。我发现强制它给它一个合理的宽度的唯一方法是设置 QDockWidget 的最小宽度,但它会阻止用户将其调整为尽可能小。