是否有任何有用的工具来诊断Qt布局和间距问题?

时间:2011-03-24 13:28:19

标签: qt layout

另见相关问题: How do you debug Qt layout problems

我有一些复杂的小部件层次结构,我正在尝试布局,并且我遇到了比我预期更接近或更远的事情的常见问题。我发现一个非常有用的技术是创建一个样式表,其中包含层次结构中不同点的小部件的不同背景和边框颜色的列表。我还添加了一个QFileSystemWatcher来在每次保存时重新加载样式表,这样可以快速更改而无需重建。

但是,我一直认为必须有更好的方法。查看Firefox的Web开发人员工具栏等工具,它们可以执行标记边框或显示控件层次结构等操作。是否有任何工具或库可以为Qt应用程序执行此操作?

2016年5月5日更新

我发现诊断间距问题最简单,最有用的方法之一就是根据QLayouts转储窗口小部件层次结构。我创建了一些示例代码,其中包含有关大小提示,间隔项,填充和内容边距的信息:https://gist.github.com/pjwhams/6ebc040db3ab55615eafd831e184e39c

另一个工具:https://github.com/robertknight/Qt-Inspector

4 个答案:

答案 0 :(得分:3)

每次将鼠标悬停在元素上时,是否可以使用QHoverEvent添加黑色边框或带有ID的弹出框?

答案 1 :(得分:3)

我在另一个主题中有一个相关的后续问题,德米特里提出了一个很好的方法,可以找到一个好的解决方案:Drawing an overlay on top of an application's window

编辑:我还在QLayout::itemAt()的文档中发现了一个有用的技术,它展示了如何在布局中迭代QLayoutItems并绘制它们的矩形

答案 2 :(得分:2)

您正在寻找的内容基本上是一种分析QObject或QWidget层次结构并添加注释的工具。这正是GammaRay is about。它是GPL许可的,因此可以免费获得。您可以在GammaRay project page上获得更多信息。我已经多次使用它,它按预期工作。

答案 3 :(得分:0)

迟到了,但QObject::dumpObjectTree()帮助我解决了我的问题。

  

将子树转储到调试输出。