布局实际上很容易理解“我认为”。 :)
布局的简单解释可以参见QT书籍《使用 QT 进行 C++ Gui 编程第二版 https://web.archive.org/web/20090822161435/qt.nokia.com/developer/books/cpp-gui-programming-with-qt-4-2nd-edition/"
关于布局及其尺寸政策您应该注意什么
- 大多数 Qt 小部件都有大小策略。此大小策略告诉系统小部件应如何拉伸或收缩。它来自 QSizePolicy 类。规模策略具有垂直和水平两个部分。
- 大多数小部件也有尺寸提示。这个尺寸提示告诉系统小部件的首选尺寸
- QSizePolicy 有一个拉伸因子,允许小部件以不同的速率增长
**I am only familiar with 4 size policies**
- 固定大小策略 - 小部件的大小是固定的,无法拉伸。它仍保持其尺寸提示。
- 最小尺寸策略 - 尺寸提示是小部件的最小可能尺寸,但如果需要,它_仍然可以_变大。
- 首选尺寸策略 - 小部件可以缩小或增大到大于其尺寸提示。
- 扩展尺寸策略 - 小部件可以缩小或增大到大于其尺寸提示:)
You may want to ask,
What is the difference between preferred and expanding?
**Answer:** Imagine a form with 2 widgets, one with preferred and another with expanding. Then any extra space will be given to the widget with the expanding policy. The widget with the preferred policy will remain at its size hint.
我推荐(警告:我不是专家:))你购买并阅读 "使用 QT 进行 C++ Gui 编程第二版 https://web.archive.org/web/20090822161435/qt.nokia.com/developer/books/cpp-gui-programming-with-qt-4-2nd-edition/“。我目前正在阅读它,它很有意义。看看这些图像,看看它们是否有意义。
Explaining size policies
一个简单的例子
这是一个简单的对话框,有 2 个按钮,其水平和垂直尺寸策略显示为水平和垂直拉伸。
Here is the preview at its smallest size.
Here is another preview at a larger size
[编辑://添加尺寸提示示例]
为什么您应该关心 SIZEHINT
您可以看到每个小部件都有一个 sizeHint,这很重要,因为 QT 的布局系统始终尊重 sizeHint。仅当小部件的默认大小不完全符合您的要求时,这才会出现问题。解决这个问题的唯一方法是扩展(子类化)小部件并重新实现它sizeHint()
成员函数。一个例子相当于1000字。为了节省空间,请参阅我的博客,其中有一个示例项目。