Qt-第一个QML程序-4-自定义按钮类,动画,状态

简介: 上篇中,我们写到了自己定义了一个按钮,但是呢,按照这样的写法,要写一个程序出来,那要累死了,所以,qml给我的感觉就是各种随便调用,所以了,可以自己写一个自己Button的qml,这样在以后用到了,就可以直接使用了。

上运行截图

image.png

在上面的关闭按钮了,就是我们上篇文章里面写到的那个自定义的按钮,下面的这个text的按钮了,就是使用我们自己定义的一个类,MyButton




import QtQuick 2.0

import QtQuick.Controls 1.4

/************************************************

 Date:2017年4月3日

 Author:DreanLife

 About:写一个自己定义的按钮

 **********************************************/

Rectangle

{

   property string nomal_Image: ""

   property string hover_Image: ""

   property string press_Image: ""

//    property string currentImage: ""

   id:root_Button

   width: 50

   height: 30

   color: "transparent"

   state: "nomal"

   Image

   {

       id: button_Background

       anchors.fill: parent

       fillMode: Image.PreserveAspectFit

       source: nomal_Image

   }

   Text

   {

       id: button_Text

       anchors.centerIn: parent

       text: qsTr("text")

   }

   MouseArea

   {

       id:button_Mousearea

       anchors.fill: parent

       hoverEnabled: true

       onEntered: root_Button.state="hover"

       onExited: root_Button.state="nomal"

       onPressed:

       {

           root_Button.state="press"

       }

   }

   states:

       [

       State {

           name: "nomal"

           PropertyChanges {

               target:button_Background

               source: nomal_Image


           }

       },

       State {

           name: "hover"

           PropertyChanges {

               target: button_Background

               source: hover_Image

           }

       },

       State {

           name: "press"

           PropertyChanges {

               target: button_Background

               source: press_Image

           }

       }

   ]

   transitions:

       [

       Transition {

           from: "nomal"

           to: "hover"

           PropertyAnimation

           {

               duration: 100

           }


       },

       Transition {

           from: "hover"

           to: "press"

           PropertyAnimation

           {

               duration: 100

           }


       },

       Transition {

           from: "press"

           to: "nomal"

           PropertyAnimation

           {

               duration: 100

           }


       }

   ]

}



这就是一个类的完整代码了,和上篇没有太多差异,这里就累赘了,下面是这个类的使用的



   MyButton

   {

       id: myButton

       width: 30

       height: 30

       y:30

       anchors.right: parent.right

       nomal_Image: "qrc:/Images/button/1.png"

       hover_Image: "qrc:/Images/button/2.png"

       press_Image: "qrc:/Images/button/3.png"

       state: "nomal"


   }


这个类的使用




源码地址:https://github.com/DreamLifeOffice/MyQmlProject


目录
相关文章
|
3月前
Qt类结构分析
Qt类结构分析
62 3
|
1月前
(8)Qt中的自定义信号
本文介绍了如何在Qt框架中创建和使用自定义信号,并通过一个父子窗口切换的示例来展示自定义信号的实现和应用。
69 3
(8)Qt中的自定义信号
|
1月前
(7)Qt中的自定义槽(函数)
这篇文章介绍了在Qt中如何定义和使用自定义槽函数,包括类成员函数、静态类成员函数、全局函数和lambda表达式作为槽函数的示例,以及使用lambda表达式时的注意事项。
39 2
(7)Qt中的自定义槽(函数)
|
2月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
2月前
|
设计模式 前端开发 安全
Qt注册类对象单例与单类型区别
在进行开发时,应当根据具体的应用场景和需求来选择使用单例模式或是单类型。如果是全局服务或状态管理,可能需要单例模式;如果是为了使QML环境下的不同组件能够访问到同一个后端服务对象,则可能需要使用单类型。
35 2
|
3月前
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
73 4
|
3月前
QT6使用CMamke将qml打包成dll
QT6使用CMamke将qml打包成dll
65 0
|
3月前
【qt】自定义对话框(2)
【qt】自定义对话框(2)
24 0
|
3月前
【qt】自定义对话框(1)
【qt】自定义对话框(1)
30 0