子项的别名目标位置无效 topMargin



当尝试将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
}
}

现在你在某个地方设置了一个新SomeObjectsmeItm.someObject,什么会被混叠?原来的SomeObject还是新的?如果要使用任意链,则需要确保引用保持有效且不会更改。

从文档中:

与普通属性不同,别名只能引用对象或对象的属性,该对象位于声明别名的类型范围内。它不能包含任意 JavaScript 表达式,也不能引用在其类型范围之外声明的对象。

这并不完全明显,但您可以将其理解为:别名表达式具有以下形式之一:

  • objectId
  • objectId.propertyName

相关内容

  • 没有找到相关文章

最新更新