QML Item

在QML中所有的可视项目都继承自Item,虽然Item本身没有可视化的外观,但它定义了可视化项目的所有属性。

Item可以作为容器使用:

Item{
        Rectangle{id:retc}
        Rectangle{id:retc1}
        Rectangle{id:retc2}
        Rectangle{id:retc3}
    }

item拥有children属性和resources

  • children可以获取可见的孩子列表
  • resources 包含了不可见的资源

children的使用:

如果只有一个元素的话,可以不用使用children

  • 使用children[   ]
  • 有多个使用,隔开
Item{
        children: [
            Text {id: t0;text: "text0"},
            Text {id: t1;text: "text1"},
            Text {id: t2;text: "text2"},
            Text {id: t3;text: "text3"},
            Text {id: t4;text: "text4"}
        ]
        Component.onCompleted: {
            console.log("index 0的内容为:",children[0].text)
            console.log("index 1的内容为:",children[1].text)
            console.log("index 2的内容为:",children[2].text)
            console.log("index 3的内容为:",children[3].text)
            console.log("index 4的内容为:",children[4].text)
        }
    }

 resources 的使用:

resources: [
            Timer{}
        ]

Item中还有一个data默认属性,允许在项目中将可见和不可见的资源自由混合,由于data是默认 属性,所以可以省略data标签。

Item{
        Text {id: t0;text: "text0"}
        Text {id: t1;text: "text1"}
        Text {id: t2;text: "text2"}
        Text {id: t3;text: "text3"}
        Text {id: t4;text: "text4"}
        Timer{}
        
        Component.onCompleted: {
            console.log("index 0的内容为:",children[0].text)
            console.log("index 1的内容为:",children[1].text)
            console.log("index 2的内容为:",children[2].text)
            console.log("index 3的内容为:",children[3].text)
            console.log("index 4的内容为:",children[4].text)
        }
    }

 opacity(透明度)

  • 0.0 全透明    
  • 1.0 完全不透明
 Item{
   Rectangle{
        width: 100
        height: 100
        color: "red"
        opacity: 0
    }
    Rectangle{
        x:110
        y:0
        width: 100
        height: 100
        color: "red"
        opacity: 0.2
    }
    Rectangle{
        x:220
        y:0
        width: 100
        height: 100
        color: "red"
        opacity: 0.5
    }
    Rectangle{
        x:330
        y:0
        width: 100
        height: 100
        color: "red"
        opacity: 1.0
    }
}

 堆叠顺序

Item拥有一个z属性,可以设置堆叠顺序,默认的堆叠顺序为0,z数值大的优先绘制。

如果都没设置的话,根据项目顺序(由上到下)绘制。

Item{
    Rectangle{
        width: 100
        height: 100
        color: "red"
    }
    Rectangle{
        width: 100
        height: 100
        color: "blue"
    }
}

Item{    
    Rectangle{
        z:1
        width: 100
        height: 100
        color: "red"
    }
    Rectangle{
        width: 100
        height: 100
        color: "blue"
    }
}

 定位子项目和坐标映射

  • Item中 提供childAt(real x,real y)函数来返回点(x,y)处的子项目,没有的话返回null。
  • mapFromItem(Item item,real x,real y):项目坐标系中的点 (x, y)映射到此项的坐标系,并返回与映射坐标匹配的点
  • mapToItem(Item item,real x,real y) :将该项目坐标系中的点(x、y)映射到项目的坐标系,并返回与映射坐标匹配的点。

transitions过渡)

使用transitions来存储项目的过渡列表

Item{
        id:item2
        transitions :[
            Transition {},
            Transition {},
            Transition {}
            
        ]
    }

states(状态)

使用states来保存该项的可能状态列表

Rectangle {
    id: root
    width: 100; height: 100

    states: [
        State {
            name: "red_color"//状态1
            PropertyChanges { target: root; color: "red" }
        },
        State {
            name: "blue_color"//状态2
            PropertyChanges { target: root; color: "blue" }
        }
    ]
}

常见的一些属性:

rotation旋转
smooth平滑处理(默认true)
scale缩放
parent父类
opacity透明
focus焦点
clip剪辑(默认false)
antialiasing抗齿状
layer.enabled是否分层

layer.enabled 是否分层

 非分层不透明度:

Item{
        opacity: 0.5
        width: 250
        height: 250
        Rectangle{id:rect1;width:100;height: 100;color:"red" ;border.width:1}
        Rectangle{id:rect2;width:100;height: 100;color: "blue";x:50;y:50;border.width:1}
    }

分层不透明度:

Item{
        opacity: 0.5
        layer.enabled: true
        width: 250
        height: 250
        Rectangle{id:rect1;width:100;height: 100;color:"red" ;border.width:1}
        Rectangle{id:rect2;width:100;height: 100;color: "blue";x:50;y:50;border.width:1}
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值