Qt自定义组件

       近来用qml写界面,经常要用到特定样式的Button,而且要用很多次,因此总会重复.本人因为不知道怎么改变系统自定义的Button的图标大小及其它属性,所以干脆用Rectangle来实现Button的功能,但缺点就是代码太多,而且重复,将其作为一个自定义组件放在单独的Qml文件中直接调用就方便且简单很多了,还不容易出错.

       新建一个Qml文件,文件名首字母大写,即是调用时的控件名称,如我用的CustomButton.qml,文件内容如下:

import QtQuick 2.2

Rectangle {
    id: bkgnd;
    implicitWidth: 120;
    implicitHeight: 50;
    color: "transparent";
    property alias iconSource: icon.source;
    property alias iconWidth: icon.width;
    property alias iconHeight: icon.height;
    property alias textColor: btnText.color;
    property alias font: btnText.font;
    property alias text: btnText.text;
    //radius: 6;
    //property bool hovered: false;
//    border.color: "#949494";
//    border.width: hovered ? 2 : 0;
    signal clicked;

    Image {
        id: icon;
        width:parent.width
        height: parent.height
        source: "./images/touch.png"
        fillMode: Image.PreserveAspectCrop   //deng bi suo fang
        clip:true      //limits area
    }
    Text {
        id: btnText;
        anchors.top: icon.bottom
        anchors.horizontalCenter: icon.horizontalCenter

    }
    MouseArea {
        id: ma;
        anchors.fill: parent
        onPressed: {
            bkgnd.scale=0.8
        }
        onClicked: {
            //console.log("aaa")
            bkgnd.scale=1
            bkgnd.clicked()
        }
    }
}
       根据需要改变其中的属性即可.

       调用格式如下:

CustomButton{
                id:btn3
                color:"blue"
                width:main.width*0.1
                height:main.height*0.16
                iconSource: "./images/touch.png"
                text:qsTr("TouchTest")
            }
      需要在要调用的qml文件头部写上一句 import "路径名"

      比如我的CustomButton.qml放在main.qml文件同目录的controls文件夹下,导入语句为:import "./controls".

      这样就大功告成了,自定义组件中还可以添加一些其他的属性,比如动画,可以拓展试试.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值