Qt qml别名问题

时间:2017-03-06 11:40:57

标签: qt qml

我正在为智能手机开发一个小应用程序,我在使用别名方面遇到了问题。 为方便起见,我在此代码段中重新创建了问题:

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; 我哪里错了?

非常感谢你。

2 个答案:

答案 0 :(得分:0)

FTYPEtext2_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更详细地解释了这一点。