博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt-第一个QML程序-3-自定义一个按钮
阅读量:4973 次
发布时间:2019-06-12

本文共 4505 字,大约阅读时间需要 15 分钟。

项目基本信息前两个已经说了,这里直接放下运行截图,

对的,这里就是说上面的那个红色的按钮,这里需要了解Qml的动画和状态

 

这里先把整个按钮的代码写出来,一点一点写

 

Rectangle    {        id:close_Btn        width: 50        height: 30        color: "transparent"        state: "nomal"        anchors.top: parent.top        anchors.right: parent.right        Text {            id: close_Text            anchors.centerIn: parent            text: qsTr("X")        }        MouseArea        {            id:close_MouseArea            hoverEnabled: true            anchors.fill: parent            onClicked:            {                close_Btn.state="press"                Qt.quit()            }            onEntered: close_Btn.state="hover"            onExited: close_Btn.state="nomal"        }        states:            [            State            {                name: "nomal"                PropertyChanges                {                    target: close_Btn                    color:"#777777"                }            },            State            {                name: "hover"                PropertyChanges                {                    target: close_Btn                    color:"red"                }            },            State            {                name: "press"                PropertyChanges                {                    target: close_Btn                    color:"blue"                }            }        ]        transitions:            [            Transition            {                from: "nomal"                to: "hover"                ColorAnimation                {                    target: close_Btn                    duration: 100                }            },            Transition            {                from: "hover"                to: "press"                ColorAnimation                {                    target: close_Btn                    duration: 100                }            },            Transition            {                from: "press"                to: "nomal"                ColorAnimation                {                    target: close_Btn                    duration: 100                }            }        ]    }

这是一个按钮的大整体代码,可能用过widget那边的人会觉得好多,确实是,不过后期我可能会把这个按钮封装成一个整的Button就可以了,使用起来就会简单好多

 

 
id:close_Btn        width: 50        height: 30        color: "transparent"        state: "nomal"        anchors.top: parent.top        anchors.right: parent.right

这部分就是这个按钮的基本部分,按钮大小50*30

 

按钮的背景颜色透明

默认状态为nomal

布局为右上角

 

Text {            id: close_Text            anchors.centerIn: parent            text: qsTr("X")        }

显示的文本信息,布局为在父级中心布局,文本内容“X”

 

 

MouseArea        {            id:close_MouseArea            hoverEnabled: true            anchors.fill: parent            onClicked:            {                close_Btn.state="press"                Qt.quit()            }            onEntered: close_Btn.state="hover"            onExited: close_Btn.state="nomal"        }

鼠标点击区域,把整个父级设置为鼠标点击区域,同时把鼠标滑入设置为允许。添加鼠标点击事件,当鼠标点击后,将状态改为press,同时推出程序

 

下面的就是当鼠标滑入是,将状态改为hover,滑出时,将状态改为nomal

 

 

states:            [            State            {                name: "nomal"                PropertyChanges                {                    target: close_Btn                    color:"#777777"                }            },            State            {                name: "hover"                PropertyChanges                {                    target: close_Btn                    color:"red"                }            },            State            {                name: "press"                PropertyChanges                {                    target: close_Btn                    color:"blue"                }            }        ]

 

定义按钮的三个状态,这里就是简单的改变一下颜色

 

 

transitions:            [            Transition            {                from: "nomal"                to: "hover"                ColorAnimation                {                    target: close_Btn                    duration: 100                }            },            Transition            {                from: "hover"                to: "press"                ColorAnimation                {                    target: close_Btn                    duration: 100                }            },            Transition            {                from: "press"                to: "nomal"                ColorAnimation                {                    target: close_Btn                    duration: 100                }            }        ]

动画机制,需要绑定目标和时间

 

ok,目前完成

源码连接:

GitHub:

 

转载于:https://www.cnblogs.com/DreamDog/p/9160034.html

你可能感兴趣的文章
android开机引导界面的几种实现
查看>>
vue组件-使用插槽分发内容(slot)
查看>>
[转]不使用中间变量,交换两个数值变量的值
查看>>
javascript 正则表达式之分组与前瞻匹配详解
查看>>
移动端问题总纲
查看>>
mysql数据库乱码解决方法之一
查看>>
kali-简单渗透笔记
查看>>
NPOI导出为Excel文件
查看>>
图论 用prim法求最小生成树
查看>>
[codeVS3943] 数学奇才琪露诺
查看>>
面试----手写正则表达式
查看>>
Javascript 笔记(4)----继承与原型链
查看>>
mysql dump 等操作
查看>>
shell编程
查看>>
第一章:Python基础の快速认识基本语法
查看>>
大数据无处不在 企业实践指南有哪些?
查看>>
python 函数进阶
查看>>
Eclipse使用技巧总结(二)
查看>>
Mysql性能优化
查看>>
spring的关于数据源的datasource接口的深入理解
查看>>