是否有可能显示QML控制边界?

时间:2017-02-20 11:45:01

标签: qml qt5

在开发QML应用程序时,如果我能够设置一些设置来概述所有可视元素边界,我认为它有时会很有用。例如,Qt Quick Controls 2.x中的控件可能包含几个部分,例如background,contentItem,指示器等。当调整这些部分的大小时,我希望看到每个部分的边界。

Qt / QML中是否有这样的功能?

2 个答案:

答案 0 :(得分:3)

三年后,人们(特别是我)仍在对此进行网络搜索:)

就像评论者@ DuKes0mE所建议的那样,我通过即时添加边框并将其从最终代码中删除来“做”。

像OP一样,我现在已经厌倦了这样做。

我最近想到的一种策略是在项目中添加一个DebugRectangle.qml自定义元素:

import QtQuick 2.12

Rectangle {
  property var toFill: parent          // instantiation site "can" (optionally) override
  property color customColor: 'yellow' // instantiation site "can" (optionally) override
  property int customThickness: 1      // instantiation site "can" (optionally) override

  anchors.fill: toFill
  z: 200
  color: 'transparent'
  border.color: customColor
  border.width: customThickness
}

然后我可以将其添加到现有元素中,以对其进行调试:

      Label {
        text: 'Lorem ipsum dolor sit amet'
      }
      Label {
        text: 'quis nostrud exercitation'
        DebugRectangle {}  // Adds "debug border" to this Label
      }

完成后,我什至可以将嵌套的DebugRectangle留在代码中,但可以像这样切换其可见性:

      Label {
        text: 'quis nostrud exercitation'
        DebugRectangle {
          visible: false
        }
      }

Complete sample project在GitHub上共享。

答案 1 :(得分:2)

有一个名为GammaRay的工具(其中包括)允许调查QtQuick 2应用程序,请参阅: BeginInvoke

安装说明在这里: http://doc.qt.io/GammaRay/gammaray-qtquick2-inspector.html

如果您正在运行Linux,那么您的发行版很可能已经发布了GammaRay包。