尝试在根组件中公开topMargin
为alias
时,出现以下错误:
Invalid alias target location: topMargin
代码如下:
import QtQuick 2.6
Item {
id: root
property alias textTopMargin: description.anchors.topMargin
Text {
id: description
}
我无法在文档中找到有关别名和锚点的任何信息,这是禁止的吗?
编辑: 似乎是由此引起的:https://bugreports.qt.io/browse/QTBUG-65011
答案 0 :(得分:2)
我为什么不起作用的原因(我没有证据)
我们假设你有以下内容:
// SomeObject.qml
QtObject {
property int someProperty: 5
}
// SomeItem.qml
Item {
property SomeObject someObject: SomeObject {}
}
现在你有了第二个项目:
// SomeOtherItem.qml
Item {
property alias someProperty: smeItm.someObject.someProperty
SomeItem {
id: smeItm
}
}
现在你在某个地方设置了一个新的SomeObject
到smeItm.someObject
,什么是别名?原来的SomeObject
还是新的?如果你想要任意链,你需要确保引用保持有效并且不会改变。
来自文档:
与普通属性不同,别名只能引用在声明别名的类型范围内的对象或对象的属性。它不能包含任意JavaScript表达式,也不能引用在其类型范围之外声明的对象。
这不是很明显,但您可以将其理解为:别名表达式具有以下形式之一:
objectId
objectId.propertyName