我正在为智能手机开发一个小应用程序,我在使用别名方面遇到了问题。 为方便起见,我在此代码段中重新创建了问题:
import QtQuick 2.7
import QtQuick.Controls 2.1
ApplicationWindow
{
id:mainscreen
property alias text2_alias: text2.text
visible: true
width: 640
height: 480
Rectangle
{
id:rec1
y:0
height: 40
width:300
border.color: "blue"
Text {
id: text1
text: "aaaa"
text2_alias:"cccc" // <<<<<<<<<<<<< Error red underline !!!
}
}
Rectangle
{
id:rec2
width:300
height: 40
anchors.top: rec1.bottom
border.color: "blue"
Text {
id: text2
text: "bbbbb"
}
}
}
错误是:无法分配给不存在的属性&#34; text2_alias&#34; 我哪里错了?
非常感谢你。
答案 0 :(得分:0)
FTYPE
是text2_alias
对象的属性。它是mainscreen
对象的属性text
的别名。
text1
对象中的text2_alias
根本不是任何事情。 text1
没有这样的属性(这就是错误所说的内容)。
答案 1 :(得分:0)
你的代码没有意义,因此QML错误。我认为这可能是对别名的误解。
别名允许您为其他属性创建“引用”(或“指针”),提供对这些属性的简洁访问,或允许它们暴露给否则可能无法访问其范围
当您声明text2_alias
时,您正在引用text
控件的text2
属性。这将允许另一个对象绑定或读取此文本的值。例如,如果您将以下内容作为mainscreen
的另一个子项添加到代码示例中:
Text {
id: anotherTextBox
text: mainscreen.text2_alias
}
(注意我将别名称为mainscreen.text2_alias
,给出别名父对象的名称以便使用它。此框中显示的文本始终与text2
(“bbbbb”)中的文本相同。这是你想要从text1
实现的目标吗?如果是这样,则不需要别名,您可以通过以下方式实现此目的:text1
:
Text {
id: text1
text: text2.text
}
别名的Qt documentation更详细地解释了这一点。