QT6实战-QML与C++联合编程

landmandw · · 203 次点击 · 开始浏览    置顶

学习地址1:https://pan.baidu.com/s/1K625sJ4j2vfr0Avnswmo4A 提取码:kql2 学习地址2:https://share.weiyun.com/ghIOkms8 密码:6vmh3d 一、QT概述 Qt是1991年由HaavardNord和EirikChambe-Eng开发的跨平台C++图形用户界面应用程序开发框架。发展至今,它既可以开发GUI程序,也可以开发非GUI程序,比如控制台工具和服务器。Qt是一个跨平台的C++应用程序框架,支持Windows、Linux、MacOSX、Android、嵌入式系统等。也就是说,Qt可以同时支持桌面应用程序开发、嵌入式开发和移动开发,覆盖了现有的所有主流平台。开发者只需要编写一次代码,而后在发布到不同平台之前重新编译即可。 Qt的工具家族丰富,目前包括QtCreator、QtEmbedded、QtDesigner快速开发工具、国际化工具等。 Qt实质上是用C++编写的大型类库,它为跨平台应用开发提供了一个完整的框架。Qt框架包含大量的类,支持GUI、数据库、网络、多媒体等各种应用的编程。 Qt还对标准C++语言进行了扩展,引入了信号与槽、属性等机制,为跨平台和GUI程序的对象间通信提供了极大的方便。 Qt还提供了一种自创的编程语言QML,它是类似于JavaScript的声明性语言。Qt提供了一个用QML编写的库Qt Quick,它类似于Qt C++类库,区别是Qt Quick中的各种控件被称为QML类型(type)。QML用于描述程序的用户界面,将用户界面描述为对象树,每个对象具有自己的各种属性。 Qt也支持Python,Qt类库的Python绑定版本比较多,比较常用的是PyQt和PySide 二、Qt6软件特性 Qt6是一款专业实用的编程开发工具。Qt6最新版优化了稳定性、功能性,并且包含 Qt 5.15 中的所有常用功能以及为 Qt 6 添加的新功能。Qt6软件大大扩展了支持平台的范围,支持 Apple Silicon 上的 macOS,同时改进了对 WebAssembly 的支持。 QT 6.0加入了许多新功能,以更好地支持现代工作负载,包括开始应用C++17,官方提到,Qt 6现在要求使用的C++ 17兼容编译器,以便在开发QT应用程序时,使用较新的C++语言结构。另外,QT 6还更新CMake构建系统,且采用全新的图形架构,并以Qt Quick统一2D与3D开发体验。 三、软件优点 Qt 6的架构变化 Qt 6中进行了一些更广泛的架构更改,包括: Qt 6现在依赖于C++17兼容的编译器,这有助于清理和改进代码库,并为用户提供更现代的API 在处理大型数据集和性能方面改进了低级容器类 持续更新QML语言,使其更安全、更易于使用 四、QML访问C++ Qt集成了QML引擎和Qt元对象系统,使得QML很容易从C++中得到扩展,在一定的条件下,QML就可以访问QObject派生类的成员,例如信号、槽函数、枚举类型、属性、成员函数等。 QML访问C++有两个方法:一是在Qt元对象系统中注册C++类,在QML中实例化、访问;二是在C++中实例化并设置为QML上下文属性,在QML中直接使用。第一种方法可以使C++类在QML中作为一个数据类型,例如函数参数类型或属性类型,也可以使用其枚举类型、单例等,功能更强大。 五、C++类的实现 C++类要想被QML访问,首先必须满足两个条件:一是派生自QObject类或QObject类的子类,二是使用Q_OBJECT宏。QObject类是所有Qt对象的基类,作为Qt对象模型的核心,提供了信号与槽机制等很多重要特性。Q_OBJECT宏必须在private区(C++默认为private)声明,用来声明信号与槽,使用Qt元对象系统提供的内容,位置一般在语句块首行。Projects选择Qt Quick Application,工程名为Hello。 六、Qt版本 Qt的版本可以根据许可类型分为商业许可和开源许可,开源许可又分为GPLv2/GPLv3和LGPLv3。 (1)商业版:商业许可需要付费,Qt公司目前采用的是按年付费的方式。商业许可允许开发者不公开项目的源代码。商业许可的Qt安装包里有更多的模块,某些模块只有在商业许可的版本中才有。 (2)开源版:采用GPLv2/GPLv3许可。若用户编写的程序使用了GPL许可的Qt代码,则用户程序也必须使用GPL许可,也就是用户代码必须开源,但是允许商业化销售。GPLv3还要求用户公开相关硬件信息。简单来说,就是你“免费”使用的东西必须也“免费”提供给别人使用。 根据开发目标的不同,Qt提供了3种安装包。安装包具有针对不同主机平台的版本,而且采用了不同的许可协议。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

203 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传