Qt-QML制作自定义组件(一)

Qt-QML制作自定义组件(一)

本文先讲制作组件的基础 绘制矩形 如图所示
在这里插入图片描述
我们绘制了一个圆角矩形 代码如下所示

Window {
    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Rectangle
    {
        id:mRectOne
        x: 10
        y: 10
        width: 100
        height: 100
        border.width: 10
        border.color: '#ff0000'
        radius: 10
        color: "#0000ff"
    }
}

Rectangle 表示绘制一个矩形
X Y 表示相对于父窗口的位置
width height表示矩形宽高
border.width border.color 表示边界宽度 和 颜色
radius 表示半径 可以创建一个圆角矩形

现在矩形框里面里面填充的蓝色 如果希望填充渐变颜色 可以参考如下代码

Rectangle
    {
        id:mRectOne
        x: 10
        y: 10
        width: 100
        height: 100
        border.width: 10
        border.color: '#ff0000'
        radius: 10
        color: "#0000ff"

        gradient: Gradient
        {
            GradientStop {position: 0.0; color: '#000000'}
            GradientStop {position: 1.0; color: '#0000ff'}
        }

    }

gradient: Gradient 这个可以用来设置颜色渐变
GradientStop {position: 0.0; color: ‘#000000’} 矩形上面颜色
GradientStop {position: 1.0; color: ‘#0000ff’} 矩形底部颜色

我们还可以对矩形区域添加鼠标事件
首先 现在对应的矩形元素下面 添加MouseArea 元素 在这个里面实现相应的逻辑代码 代码示例如下

Window {
    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Rectangle
    {
        id:mRectOne
        x: 10
        y: 10
        width: 100
        height: 100
        border.width: 10
        border.color: '#ff0000'
        radius: 10
        color: "#0000ff"
        gradient: Gradient
        {
            GradientStop {position: 0.0; color: '#000000'}
            GradientStop {position: 1.0; color: '#0000ff'}
        }
        
        
        //鼠标事件实现
        MouseArea
        {
            id:mAreaOne
            width: parent.width
            height: parent.height
            onClicked: mRectTwo.visible = !mRectTwo.visible
        }

    }

    Rectangle
    {
        id:mRectTwo
        x: 200
        y: 200
        width: 100
        height: 100
        border.color: '#ff0000'
        color: "#0000ff"
    }
}

下面我们在看下矩阵的布局
1、row排列布局 如下如所示
在这里插入图片描述
创建3个矩形窗口 分别为红色 绿色 蓝色 三个矩形按行排列 同时间隔20

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Row //设置行排列    如果需要按列排列  使用Column
    {
        id: rowOne
        anchors.centerIn: parent
        spacing: 20   //设置间隔距离
        Rectangle
        {
            id: one
            width: 100
            height: 100
            color: '#ff0000'
        }

        Rectangle
        {
            id: two
            width: 100
            height: 100
            color: '#00ff00'
        }

        Rectangle
        {
            id: three
            width: 100
            height: 100
            color: '#0000ff'
        }
    }
}

只要将在row里面 添加你想要的界面 spacing 是用来设置间隔距离
按照列排列 只要讲row 改成Column即可
在这里插入图片描述
2、栅格排列 如下图所示
在这里插入图片描述
栅格排列需要设置row 和 column 的值 当然也可以只设置其中一个 系统会自动计算出 另一个值
spacing 设置所有元素之间的间隔 rowSpacing 和 columnSpacing 分别设置元素行间隔 和 列方向间隔
代码如下

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Grid
    {
        id: gridone
        anchors.centerIn: parent
        rows: 2
        columns: 2
        spacing: 20
        rowSpacing: 10
        columnSpacing: 10
        Rectangle
        {
            id: one
            width: 100
            height: 100
            color: '#ff0000'
        }

        Rectangle
        {
            id: two
            width: 100
            height: 100
            color: '#00ff00'
        }

        Rectangle
        {
            id: three
            width: 100
            height: 100
            color: '#0000ff'
        }
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值