2017-03-06 44 views
0

我正在为智能手机开发一个小应用程序,并且我有一个别名使用问题。 为了方便我在此代码段重建的问题: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" 

     } 


    } 


} 

的错误是:不能分配给不存在的财产“text2_alias” 我在哪里错了?

非常感谢。

+0

'Text'没有名为'text2_alias'的属性。阅读[this](http://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html#property-aliases)页面以获取有关属性别名的更多信息。 – folibis

+0

你预计会发生什么? – derM

+0

你想在这里做什么? – dtech

回答

0

text2_aliasmainscreen对象的属性。这是text1对象的属性text的别名。

text1对象中的text2_alias根本不是什么。 text1没有这样的属性(这就是错误所说的)。

+0

感谢Velkan, 我明白了,但是实现属性text2对象的解决方法是什么,怎么办? – Nicola

0

你的代码没有意义,因此QML错误。我想这可能是一个关于别名的误解。

别名允许您为其他属性创建'引用'(或'指针'),提供对这些属性的简洁访问,或允许它们暴露于其他可能无法访问它们的对象的对象范围

当您声明text2_alias时,您正在参考text2控件的text属性。这将允许另一个对象绑定或读取此文本的值。例如,如果您添加以下到您的代码示例为mainscreen另一个孩子:

Text { 
    id: anotherTextBox 
    text: mainscreen.text2_alias 
} 

(请注意,我指的是别名mainscreen.text2_alias,为了使用它给别名的父对象名称)。此框中显示的文本将始终与text2(“bbbbb”)中的文字相同。这是你想从text1实现吗?如果是这样,那么没有别名是必需的,你可以做到这一点我修改text1为:

Text { 
    id: text1 
    text: text2.text 
} 

的别名Qt documentation解释得更详细。