Qt
具有灵活而强大的布局机制来处理桌面应用程序窗口的视图。
但它是如此灵活,以至于当出现问题并需要微调时,它几乎无法被理解。而且如此强大,以至于它可以击败任何试图压倒 Qt 关于表单外观的观点的人。
那么,谁能解释一下,或者提供一下Qt的定位机制的文章或者来源吗?
我试图强制
QLabel
、QPushButton
和 QTableView
(在名称中用下划线标记)比下面有 QTextBrowser
的 verticalStretch = 1
高两倍。如何正确处理小部件的高度?
布局实际上很容易理解“我认为”。 :)
关于布局的简单解释可以在QT书籍《C++ Guiprogramming with QT 2nd Edition》
关于布局及其尺寸政策您应该注意什么
我推荐(警告:我不是专家:))您购买并阅读“C++ Gui 编程与 QT 第二版”。我目前正在阅读它,它很有意义。看看这些图像,看看它们是否有意义。
解释尺寸政策
一个简单的例子
这是一个简单的对话框,有 2 个按钮,其水平和垂直尺寸策略显示为水平和垂直拉伸。
这是最小尺寸的预览。
这是另一个更大尺寸的预览
[编辑://添加尺寸提示示例]
为什么您应该关心 SIZEHINT
您可以看到每个小部件都有一个 sizeHint,这至关重要,因为 QT 的布局系统始终尊重 sizeHint。仅当小部件的默认大小不完全符合您的要求时,这才会出现问题。解决此问题的唯一方法是扩展(子类化)小部件并重新实现其
sizeHint()
成员函数。一个例子相当于1000字。为了节省空间,请参阅我的博客,其中有一个示例项目。
根据其文档:
将小部件添加到布局时,布局过程如下:
所有小部件最初都会根据它们的 QWidget::sizePolicy() 和 QWidget::sizeHint() 分配一定的空间量。
如果任何小部件设置了拉伸因子,且值大于零,则它们将按照其拉伸因子的比例分配空间(如下所述)。
如果任何小部件的拉伸因子设置为零,则只有在没有其他小部件需要空间时,它们才会获得更多空间。其中,空间首先分配给具有扩展大小策略的小部件。
任何分配的空间小于其最小大小(如果未指定最小大小,则为最小大小提示)的小部件都会分配它们所需的最小大小。 (小部件不必具有最小尺寸或最小尺寸提示,在这种情况下,拉伸因子是它们的决定因素。)
任何分配的空间超过其最大大小的小部件都会分配它们所需的最大大小空间。 (小部件不必具有最大尺寸,在这种情况下,拉伸因子是它们的决定因素。)
并且
sizeHint()
是 QWidget 的推荐大小,父级 widget 的 Layout
将考虑 sizeHint()
和 sizePolicy()
来确定子级 widget 可以容纳的空间。
您可以使用QT样式表来控制小部件的高度 以及其他属性以简单的可定制方式。
http://doc.qt.io/archives/qt-4.7/stylesheet.html
对于布局,你需要明智而有力地使用它们 与垫片结合以使小部件表现良好 正是您想要的方式。