QML QtCreator使用无效代码

时间:2015-10-28 15:13:28

标签: qml qt5 qtquick2

我定义了以下属性,例如:

property Gradient greenGradient:  Gradient {
    GradientStop {
        position: 0.0
        color: "#00f03b"
    }
    GradientStop {
        position: 1.0
        color: "#3cb53b"
    }
}

在我执行

时,在QtCreator(v3.5.0,在Windows7中运行)
  

工具 - > QML / JS->重新格式化文件

它将我的属性更改为以下无效代码:

property Gradient greenGradient: greenGradient: Gradient {
                                     GradientStop {
                                         position: 0.0
                                         color: "#00f03b"
                                     }
                                     GradientStop {
                                         position: 1.0
                                         color: "#3cb53b"
                                     }
                                 }

通过将Component定义为此类属性,我是否做错了什么? Rhe QML docs state

  

此外,任何QML对象类型都可以用作属性类型。例如:

     

property Item someItem
     property Rectangle someRectangle

或者它只是QtCreator重新格式化功能中的一个错误?我尝试了一些具有相同结果的不同对象类型。 intcolorvarstring等基本类型按预期工作。

1 个答案:

答案 0 :(得分:0)

我想我找到了答案。

Qt5文档对此主题保持沉默(或至少不清楚)。但是,在Qt 4.7文档中,我找到了this

  

此类对象类型属性默认为未定义的值。

所以,代码必须这样读取:

property Gradient greenGradient
greenGradient: Gradient {
    GradientStop {
        position: 0.0
        color: "#00f03b"
    }
    GradientStop {
        position: 1.0
        color: "#3cb53b"
    }
}

原始代码和修改代码的功能相同并不值得。修改后的版本只是通过QtCreator重新格式化功能获得,而不会搞砸。