QML中Rectangle的用法和属性

盒子模型也是QML的特点之一。这里最值得一提的还是Rectangle这个item,因为他的用处很广泛。他可以用来对某个区域进行操作和绘制。比如你要在特定的地方指定接收鼠标单击事件,或者某个地方显示特定的颜色。

简单看一看Rectangle的一些属性。

 

import QtQuick 2.3
import QtQuick.Window 2.2

Window {
    visible: true
    Rectangle{
        x:10//这里的坐标是相对于它的父窗口,也就是Window
        y:10
        width: 100;
        height: 100;//一定要指定出大小才能显示
        visible: true
        antialiasing: true;//抗锯齿,默认就是开启的
        border.width: 10;
        border.color: "red";//边框的一些属性
        color: "blue"//内部的颜色
        gradient: Gradient{//颜色渐变
            GradientStop { position: 0.0; color: "lightsteelblue" }
            GradientStop { position: 1.0; color: "blue" }
        }
        radius: 10;//圆角
        clip:true//这一属性设置表示如果他的子类超出了范围,那么就剪切掉,不让他显示和起作用
        Rectangle{
            id:son
            x:50;
            y:50;
            width: 300;
            height: 100;
            color: "gray";
        }
    }
}

 

针对clip属性做特殊说明:

Clip属性设置为clip:true的效果:

 

子类是不是被切割了呢。

再看一下设置为clip:false的情况:

 

 

 

这样,超出的部分也会被显示出来。

而更加不幸的是默认居然是false,所以千万要注意。

 

当然,这里有一个问题,就是我要怎么绘制一个不规则的区域呢?比如六边形的区域?留下悬念吧……

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QML的GridView是QtQuick的一个控件,用于在一个网格展示一组数据项。下面是GridView的常用属性用法说明: 1. model:GridView要展示的数据模型,可以是一个ListModel或者一个QAbstractItemModel的子类。 2. delegate:用于展示每个数据项的delegate组件。可以是一个Component或者一个QML文件路径。 3. anchors:用于设置GridView在父控件的位置和大小。 4. cellWidth:设置每个网格项的宽度。如果未设置,则GridView会自动计算每个网格项的大小。 5. cellHeight:设置每个网格项的高度。如果未设置,则GridView会自动计算每个网格项的大小。 6. flow:设置网格项的排列方式。有两种取值:Flow.TopToBottom表示从上到下排列,Flow.LeftToRight表示从左到右排列。 7. snapMode:设置滚动时是否吸附到网格项。有三种取值:SnapMode.None表示不吸附,SnapMode.ScrollOneItem表示滚动一个网格项时吸附,SnapMode.ScrollOneRowOrColumn表示滚动一行或一列时吸附。 8. highlight:设置当鼠标悬停在网格项上时的高亮效果。 下面是一个简单的GridView示例代码: ``` GridView { id: grid anchors.fill: parent cellWidth: 100 cellHeight: 100 flow: Flow.LeftToRight snapMode: SnapMode.ScrollOneItem highlight: Rectangle { color: "gray" opacity: 0.5 } model: ListModel { ListElement { text: "Item 1" } ListElement { text: "Item 2" } ListElement { text: "Item 3" } ListElement { text: "Item 4" } ListElement { text: "Item 5" } ListElement { text: "Item 6" } ListElement { text: "Item 7" } ListElement { text: "Item 8" } ListElement { text: "Item 9" } } delegate: Rectangle { width: grid.cellWidth height: grid.cellHeight Text { text: model.text anchors.centerIn: parent } } } ``` 其,这个示例的GridView展示了一个ListModel的9个数据项,每个数据项的大小都为100x100,从左到右排列,滚动一个网格项时吸附。当鼠标悬停在网格项上时,网格项会变成灰色半透明。每个网格项使用一个Rectangle来展示数据,Rectangle包含了一个Text组件来展示数据项的文本内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值