【小白课程】一文带你初步了解 QML
QML是Qt框架构成中一种多用途语言,能够高效创建视觉效果更为丰富的用户界面。它与Qt的高性能图形功能结合使用,可以直接从QML应用程序中访问Qt的类型和其他功能。
其中,QML由对象声明、属性、绑定、信号和处理程序事件系统构成,如下所示:
上图中,声明了一个Window作为对象,包含Rectangle元素作为子对象,指定了Window对象的width、height、visible、title属性。Rectangle对象的宽度和高度与Window对象的宽度和高度绑定在一起,当改变Window对象宽度时,会发出widthChanged信号,onWidthChanged信号处理程序会在日志中记录新宽度。
1.什么是属性
属性是对象行为的基本方式,属性的数据类型决定了能够容纳的数据类型和可以对数据进行的操作。QML类型中定义了一组属性来作为对象的基本属性。创建对象类型的实例时都会带着为该对象类型定义的属性集。所有QML属性都与数据类型相关联,可以使用下列几种数据类型:
-
简单值类型,例如int、double、string和bool。
-
结构化值类型,例如rect和font。
-
对象类型不仅可以用于声明对象,还可以用作属性的类型。
-
特殊值类型,例如list、map和var。
2.什么是绑定
QML使用符合标准的JavaScript引擎,绑定可以包含JavaScript表达式或语句。绑定可以访问对象属性、调用方法,并且可以使用内置的Date和Math等内置的JavaScript对象,例如:
-
height:parent.height/2表示该矩形的高度是其父级高度的一半。
-
height:Math.min(parent.width, parent.height)表示该矩形的高度取决于父级宽度或高度的最小值。
-
height:parent.height>100?parent.height:parent.height/2表示该矩形父级高度超过100,则高度等于父级高度,否则高度为父级高度的一半。
3.信号和处理机制
QML具有信号及其处理机制,应用程序和用户界面的组件之间需要信号来相互通信。信号是事件,来自对象的通知,代表发生某件事件,比如点击按钮等操作。发出信号时,需要相应的信号处理程序来响应,它是QML引擎调用的回调函数,在信号处理程序中会通过脚本或者其他操作逻辑来实现组件对事件的响应,举个例子:
在这个示例中,处理了MouseArea对象的clicked()信号。当点击该对象时,矩形位置会随机改变。
4.总结
QML语言支持声明式编程,允许声明应用程序的构建块,并使用各种属性对其进行修饰,而无需担心底层实现细节。同时QML也支持命令式编程来处理事件或操作数据,这些特点使得QML可读性强且易于上手,是设计师和开发人员都能使用的通用语言,方便将草图实现为应用程序。
此外,QML还可以扩展组件,支持封装组件来减低复杂性,并具备多平台和设备构建和部署应用程序的能力。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Taro 3.6.31 发布,BAT 小程序、H5 与 RN 端统一框架
Taro 3.6.31 现已发布。Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 等应用。 此版本具体更新内容如下: H5 新增了 H5 版本的 Map 组件 修复了 CSS 中单行注释的语法问题 修复了在弱网络情况下,频繁切换页面导致页面实例错乱和多个相同页面挂载的问题 React Native 修复了 React Native 组件打包异常的问题 修复了 Windows 环境下运行 Sass 1.37.5 版本报错的问题 鸿蒙 Hybrid 优化了 JSBridge 通信 优化了 JSBridge 中类实例方法过多的问题 修复了 storage 的 sync 逻辑问题 修复了当频繁点击 navigateTo 时会导致页面重复打开的问题 removeStorage 删除 JS 侧缓存 更新说明:https://github.com/NervJS/taro/releases/tag/v3.6.31
- 下一篇
deepin 社区月报 | 2024 年 5 月,deepin V23 RC 正式发布,校园联盟走进海外!
deepin(深度)社区5月总览 2024年5月,有1052位小伙伴加入了deepin(深度)社区大家庭,目前共有论坛伙伴154962位; 在5月,deepinV23正式发布了RC版本,在本次发布的RC版本中,超过10+的应用共新增了50+新功能; 5月除上线新活动外,deepin校园联盟也走向海外,与全球deepin爱好者共同交流; 当前deepin现有SIG组43个,5月deepinSIG组共提交PR 458个,提交Issues 244个。 社区产品 deepin V23 RC 发布 2024年5月15日,deepin V23 RC 版本正式发布,在此次版本中,安装器、启动器、任务栏等新增了诸多功能,同时进行了诸多功能优化调整,进一步提升用户体验。 在本次RC版本中,用户关注的UI设计也进行了大量的改进,同时也实现了用户一直反馈的任务栏靠左等功能。deepinV23RC目前持续收集用户体验,欢迎大家通过deepin论坛以及深度之家反馈更多问题与需求,或参与deepinV23内测,感谢每一位deepin用户的参与。 deepin V23 RC 发行注记:deepin V23 RC...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题