另见相关问题: How do you debug Qt layout problems
我有一些复杂的小部件层次结构,我正在尝试布局,并且我遇到了比我预期更接近或更远的事情的常见问题。我发现一个非常有用的技术是创建一个样式表,其中包含层次结构中不同点的小部件的不同背景和边框颜色的列表。我还添加了一个QFileSystemWatcher
来在每次保存时重新加载样式表,这样可以快速更改而无需重建。
但是,我一直认为必须有更好的方法。查看Firefox的Web开发人员工具栏等工具,它们可以执行标记边框或显示控件层次结构等操作。是否有任何工具或库可以为Qt应用程序执行此操作?
我发现诊断间距问题最简单,最有用的方法之一就是根据QLayouts转储窗口小部件层次结构。我创建了一些示例代码,其中包含有关大小提示,间隔项,填充和内容边距的信息:https://gist.github.com/pjwhams/6ebc040db3ab55615eafd831e184e39c
答案 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()帮助我解决了我的问题。
将子树转储到调试输出。