从KDE质体的来源来看,有些小部件声明了 marginHints
财产 这个:
property QtObject marginHints: QtObject {
property int left: Math.round(units.smallSpacing / 2)
property int top: Math.round(units.smallSpacing / 2)
property int right: Math.round(units.smallSpacing / 2)
property int bottom: Math.round(units.smallSpacing / 2)
}
虽然没有在任何地方明确提及,但删除它们实际上破坏了布局。
其他地方是否有记载?它是如何工作的?这是某种QML魔法吗?
看来,QML的范围解析比我想象的要复杂得多。不过阅读文档(也就是RTFM)还是有帮助的。
https:/doc.qt.ioqt-5qtqml-documents-scope.html。
根据该条规定。
组成部分的范围
QML文档中的每个QML组件都定义了一个逻辑范围。每个文档至少有一个根组件,但也可以有其他内联子组件。组件范围是组件中的对象id和组件的根对象属性的结合。
[...]
组件实例层次结构
在 QML 中,组件实例将它们的组件作用域连接在一起,形成一个作用域层次结构。组件实例可以直接访问它们祖先的组件作用域。
将作用域组合在一起,它可能已经被该项目的任何子组件的任何内部组件所使用。