码迷,mamicode.com
首页 > 其他好文 > 详细

9.qml-property自定义属性

时间:2021-04-08 13:25:36      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:属性   col   st3   介绍   string   window   没有   rgb   eal   

1.property介绍

  • property用来自定义一个属性,并且可以进行初始化,且没有public、private、protected等限制.
  • property定义属性的类型可以是QML基本类型、也可以是QML对象类型,也可以是var泛型类型,而基本类型支持的有bool、double、int、list、real、string、url类型
  • 自定义的属性默认会有个属性值改变信号,可以通过on<Property>Changed信号处理器来接受该信号。

示例如下所示:

Window{
    visible: true
    property int cnt             // 未初始化,cnt默认为0
    property string label: "cnt" // 进行初始化 label = "cnt"
    
    Component.onCompleted: {
        console.log(label+","+cnt);
        cnt++;
        label = "count";
    }
    
    onLabelChanged: {
        console.log("onLabelChanged:"+label)
    }
    onCntChanged: {
        console.log("onCntChanged:"+cnt)
    }
}

运行打印:

qml: cnt,0
qml: onCntChanged:1
qml: onLabelChanged:count

 

2.基本类型数组属性自定义
基本类型数组属性自定义,则使用var泛型类型即可,示例如下所示:

Window{
    visible: true
    property var strList : [
        "str1",
        "str2",
        "str3"
    ]
    
    Component.onCompleted: {
        console.log(strList.length);
        for(var index in strList) {
            console.log(index+": "+strList[index])
        }
    }
}

 

3. QML对象数组属性自定义
如果自定义一组对象数组,则使用list<Object>类型,示例如下所示:

Window{
    visible: true
    property list<Rectangle> rectList : [
        Rectangle{ id: list1; color:"#FF0000" },
        Rectangle{ id: list2; color:"#FFFF00"},
        Rectangle{ id: list3; color:"#FFFFFF"}
    ]
    
    Component.onCompleted: {
        console.log(rectList.length);
        for(var index in rectList) {
            console.log(index+": "+rectList[index].color)
        }
    }
}

如果用var去存储QML对象数组,将会报错,因为var类型接受的array数组只能是基本类型,而Rectangle是个对象.

4.只读属性自定义
只读属性必须初始化,且不能修改,只需要在property前面加上readonly即可.
比如:

readonly property string type: "readonly"

 

9.qml-property自定义属性

标签:属性   col   st3   介绍   string   window   没有   rgb   eal   

原文地址:https://www.cnblogs.com/lifexy/p/14628263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!