了解Qt中的表单布局机制
Qt
有一个灵活和强大的布局机制来处理桌面应用程序的窗口的视图。
但它是如此的灵活,几乎不能理解,当出现问题,需要微调。 如此强大,可以击败任何人试图压倒Qt对forms应该看起来的看法。
那么,任何人都可以解释,或提供Qt的定位机制的文章或来源?
我试图强制QLabel
, QPushButton
和QTableView
,在其名称后面用下划线标记,比verticalStretch = 1
QTextBrowser
verticalStretch = 1
QTextBrowser
高两倍。 我如何正确处理小部件的高度?
我的表单的.ui文件在谷歌文档。 在名称中search“____”,在QtDesigner中预览
布局实际上很容易理解“我认为”:)
有关布局的简单说明,请参见qt书籍“ 使用QT第2版的C ++ Gui编程 ”
你应该知道关于布局和大小政策
- 大多数Qt小部件都有一个大小策略。 这个尺寸策略告诉系统小部件应该如何伸展或缩小。 它来自类QSizePolicy。 尺寸政策有纵向和横向的组成部分。
- 大多数小部件也有一个大小的提示。 这个大小的提示告诉系统一个小部件的优先大小
- QSizePolicy有一个伸缩因子,允许小部件以不同的速率增长
我只熟悉4尺寸的政策
- 固定大小的政策 – 小部件的大小是固定的,不能被拉伸。 它仍然在其大小的提示。
- 最小尺寸策略 – 尺寸提示是小部件可能的最小尺寸,但如果有必要,它仍然可以变大。
- 首选大小政策 – 小部件可以缩小或增长大于其大小的提示。
- 扩大尺寸政策 – 小部件可以收缩或增长比它的大小提示:)
你可能要问,
首选和扩展有什么区别?
回答:想象一个带有2个小部件的窗体,一个带有首选,另一个带有扩展,然后任何额外的空间将被赋予带有扩展策略的小部件。 具有首选策略的小部件将保持其大小提示。
我推荐(警告:我不是专家:)) 你购买并阅读 “ 用QT第二版C ++ Gui编程 ”。 我目前正在阅读它,并做出了很多的意义。 看看图像,看看它们是否有意义。
解释尺寸政策
一个简单的例子
这是一个简单的对话框,包含两个button,其水平和垂直尺寸策略显示为水平和垂直方向。
这是最小尺寸的预览。
这是另一个更大的预览
[编辑://添加大小提示示例]
为什么要关心尺寸?
你可以看到,每个部件都有一个sizeHint,这是至关重要的,因为QT的布局系统总是尊重sizeHint。 这只是一个问题,如果小部件的默认大小不完全是你想要的。 解决这个问题的唯一方法是扩展(子类)这个小部件并重新实现它的sizeHint()成员函数。 一个例子值1000字。 为了节省空间,请参阅我的博客,其中有一个示例项目。
您可以使用QT样式表以一种简单的自定义方式来控制窗口小部件的高度和其他属性。
http://doc.qt.io/archives/qt-4.7/stylesheet.html
至于布局,你需要明智地使用它们,并与间隔符配合使用,以使小部件的行为完全符合你的需求。