当前位置: 首页 > Linux

Qt小知识-用一篇短文带你走进QML的精彩世界

时间:2023-04-06 01:57:16 Linux

大家好,我是老吴。今天,我将通过几个小例子,为大家快速介绍一下QML编程。0.QML是什么?QML是一种用于描述应用程序用户界面的声明性编程语言,而QtQuick是QML应用程序的标准库。我为什么选择学习QML?便于使用;可读性高;学习资料很多,有各种文档和例子;跨平台;性能还不错,流畅度也不错。1.如何创建QML应用程序?例如:在QtCreator中点击:->File->NewFileorProject->Applications->QtQuickApplication点击??next直到完成。修改main.qml:`//filemain.qml``importQtQuick2.12``importQtQuick.Window2.12``Window{``visible:true``width:320``height:240``title:qsTr("HelloWorld")``Rectangle{``width:320``height:240``color:"green"``Text{``anchors.centerIn:parent``text:"Hello,World!"``}``}``}`这将完成您的第一个QML程序,它显示“HelloWorld!”在一个绿色的长方形上。运行效果:这里的Window、Rectangle、Text都是QML中的类型,术语是QMLType。了解有关QML类型的更多信息:QML类型系统QML基本类型QML对象类型2.使用Qt快速控件什么是Qt快速控件?QtQuickControls是一组用于在QtQuick中构建完整界面的控件。例如:`//filemain.qml``importQtQuick2.12``importQtQuick.Controls2.12``ApplicationWindow{``visible:true``title:qsTr("HelloWorld")``width:320``height:240``menuBar:MenuBar{``Menu{``title:qsTr("File")``MenuItem{``text:qsTr("&Open")``onTriggered:console.log("Openactiontriggered");``}``MenuItem{``text:qsTr("Exit")``onTriggered:Qt.quit();``}``}``}``Button{``text:qsTr("HelloWorld")``anchors.horizo??ntalCenter:parent.horizo??ntalCenter``anchors.verticalCenter:parent.verticalCenter``}``}`其中ApplicationWindow、MenuBar、Button首先是QMLTypes,它们是QtQuickControls中提供的控件.ApplicationWindow是一个通用的窗口控件;MenuBar是一个菜单栏控件;Button是一个按钮控件;运行效果:详细了解QtQuickControls:QtQuickLayouts-BasicExampleQtQuickControls-Gallery3。使用QML处理用户输入以设计大型界面优点是它允许设计人员使用简单的JavaScript表达式定义应用程序对事件的反应。在QML中,我们将事件称为信号,这些信号由信号处理程序处理。例如:`//filemain.qml``ApplicationWindow{``...``Rectangle{``width:100``height:100``color:"red"``anchors.verticalCenter:parent.verticalCenter``Text{``anchors.centerIn:parent``text:"Hello,World!"``}``TapHandler{```onTapped:parent.color="green"``}``}``}`运行作用:TapHandler用于响应触摸屏或鼠标点击,这里我们用它来处理绿色方块的点击事件。进一步的事件处理:SignalandHandlerEventSystem4。属性绑定什么是属性绑定?对象及其属性构成了QML文件中定义的图形界面的基础。QML允许属性以各种方式相互绑定,从而实现高度动态的用户界面。例如:`//filemain.qml``ApplicationWindow{``Rectangle{``width:100``height:100``color:"red"``Rectangle{``width:parent.width/2``height:parent.height/2``color:"green"``}``}``}`运行效果:子矩形的长宽与父矩形的几何形状绑定。如果父矩形的高度和宽度发生变化,子矩形的高度和宽度将由于属性绑定而自动更新。5.自定义QML类型每个QML文件都隐式定义了一个QML类型,可以在其他QML文件中重复使用。例如:创建一个新的QML文件MessageLabel.qml:`//fileMessageLabel.qml``importQtQuick2.12``Rectangle{``height:50``propertystringmessage:"debugmessage"``propertyvarmsgType:[“调试”,“警告”,“严重”]``颜色:“黑色”``列{``anchors.fill:父级``填充:5.0``间距:2``文本{``文本:msgType。toString().toUpperCase()+":"`font.bold:msgType=="critical"`font.family:"TerminalRegular"``color:msgType==="warning"||msgType===“关键”?“红色”:“黄色”``颜色动画{```运行:msgType==“关键”``从:“红色”``到:“黑色”``持续时间:1000``循环:msgType==“批判的”?Animation.Infinite:1``}``}``Text{``text:message``color:msgType==="warning"||msgType===“关键”?"red":"yellow"``font.family:"TerminalRegular"``}``}``}`这里可以理解为我们创建了一个名为MessageLabel的控件。引用MessageLabel:`//filemain.qml``Window{``...``Column{``...``MessageLabel{``width:parent.width-2``msgType:"debug"``}``MessageLabel{``width:parent.width-2``message:"Thisisawarning!"``msgType:"warning"``}``MessageLabel{``width:parent.width-2``message:"Acriticalwarning!"``msgType:"critical"``}``}``}`运行效果:我们方便的构造了一个名为MessageLabel的控件来实现不同级别的日志打印。至此,相信你已经进入了QML编程的世界,请开始你自己的探索之旅吧。——完结——推荐阅读:专辑|Linux驱动开发专辑|Linux系统编程专辑|后台回复【加群】,我拉你进群。