QML QtCreator 使用无效代码重新格式化组件类型的属性

Posted

技术标签:

【中文标题】QML QtCreator 使用无效代码重新格式化组件类型的属性【英文标题】:QML QtCreator reformats property of component type with invalid code 【发布时间】:2015-10-28 15:13:27 【问题描述】:

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

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 文档state:

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

property Item someItemproperty Rectangle someRectangle

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

【问题讨论】:

【参考方案1】:

我想我找到了答案。

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

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

因此,代码必须改为:

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

原始代码和修改后的代码功能相同毫无价值。修改后的版本只是通过 QtCreator 的重新格式化功能得到的,没有搞砸。

【讨论】:

以上是关于QML QtCreator 使用无效代码重新格式化组件类型的属性的主要内容,如果未能解决你的问题,请参考以下文章

Qml QtQuick2'无效的属性名称“样式”(M16)' [重复]

更改后,QT QML资源文件不会重新编译

保存后Livereload

Qt5.4mingwRC1 的 QtCreator 的 qml 文件和设计器选项卡出现问题

QML ProgressBar 无效的属性名称“样式”

qt:按钮的无效属性名称“x”(M16)