【发布时间】:2011-01-28 01:09:48
【问题描述】:
在我的应用程序中,我的小部件周围有太多空间,我想追踪哪些小部件导致了这个空间。空间内容的唯一来源是Margins吗? QBoxLayout 对象是否创建了额外的空间? matplotlib FigureCanvas 呢?
我的主要问题是:
是否有一个程序可以递归遍历显示边距和空间来源的 Qt 小部件树?
【问题讨论】:
在我的应用程序中,我的小部件周围有太多空间,我想追踪哪些小部件导致了这个空间。空间内容的唯一来源是Margins吗? QBoxLayout 对象是否创建了额外的空间? matplotlib FigureCanvas 呢?
我的主要问题是:
是否有一个程序可以递归遍历显示边距和空间来源的 Qt 小部件树?
【问题讨论】:
我不知道有这样的程序,但如果您使用 Qt Designer,您可以使用任何文本查看器打开 *.ui 文件并查找名称可疑的属性,例如“margin”或“spacing”。盒子布局也有它们,例如:
<layout class="QVBoxLayout" >
<property name="spacing" >
<number>6</number>
</property>
<property name="leftMargin" >
<number>6</number>
</property>
<property name="topMargin" >
<number>6</number>
</property>
<property name="rightMargin" >
<number>6</number>
</property>
<property name="bottomMargin" >
<number>6</number>
</property>
如您所见,这里有很多额外的 6 像素边距和间距。一旦你弄清楚哪些属性会导致你的麻烦,只需将它们设置为零或合理的值。
如果你不使用 Qt Designer,那就更难了。您仍然可以使用 Designer 创建一个示例 GUI,以帮助您找出罪魁祸首。然后你可以编写一段代码,遍历widget树并打印出这些属性。
【讨论】: