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