当尝试将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
编辑2: 该错误已因无效而关闭,原因似乎记录在此处: https://codereview.qt-project.org/c/qt/qtdeclarative/+/215724
我为什么它不起作用的原因(我没有证据)
假设您有以下内容:
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