Qt-第一个QML程序-3-自定义一个按钮

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

image.png

对的,这里就是说上面的那个红色的按钮,这里需要了解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,目前完成


源码连接:http://download.csdn.net/detail/z609932088/9802022


GitHub:https://github.com/DreamLifeOffice/MyQmlProject


目录
相关文章
|
1月前
(8)Qt中的自定义信号
本文介绍了如何在Qt框架中创建和使用自定义信号,并通过一个父子窗口切换的示例来展示自定义信号的实现和应用。
70 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编译程序的内存泄漏检测
|
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)
32 0
|
3月前
【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Check Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Check Box的使用及说明
79 0
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
181 1
Qt(C++)开发一款图片防盗用水印制作小工具

相关实验场景

更多

推荐镜像

更多