目录
3.1官方示例 Creating C++ Plugins for QML
3.2 自定义Qt Quick 2 Extension Plugin 项目
系列文章目录
前言
大型和复杂的软件系统中,插件是一种广泛应用的思想和模式。
总的来说,插件为软件开发者和用户提供了很多优势。他们提供了灵活性和可扩展性,使软件更加适应多种不同的应用场景。
下面介绍在QML中如何封装
1.QML是什么?
QML,全称为Qt Meta-Object Language,是一种用于创建用户界面的声明性编程语言。它是由Qt框架开发的、基于JavaScript语法的标记语言。
QML的特点是简洁、易于学习和使用,并且能够充分利用Qt框架的优势,如跨平台性、高性能、可扩展性和可定制性等。QML不需要编写大量的代码来创建和布局用户界面,而是通过声明式的方法来描述UI元素、交互和动画效果等。
QML可以与C++语言进行混合编程,以便在Qt应用程序中使用QML和C++的优势。使用QML和Qt Creator工具,开发人员可以轻松创建出现代化且高效的用户界面。
QML被广泛应用于Qt Quick技术中,Qt Quick是一个用于创建现代UI界面和动画的框架。QML和Qt Quick可以用于多种平台,如移动设备、桌面软件、嵌入式系统等。由于QML的易用性和灵活性,它已成为Qt框架的重要组成部分,为开发高质量的用户界面提供了强大的工具和支持。
(以上来自CSDN创作助手)
2.Qt和Qml怎么通讯
2.1官方文档
2.2 before 5.15
2.2.1 注册函数
到目前为止,在 QML 中使用 C++ 类型的常用方法是使用 qqml.h 标头中提供的注册函数:
- qmlRegisterType()、
- qmlRegisterSingletonType()、
- qmlRegisterUncreatableType()
2.2.2 qmltypes声明文件
qmltypes 文件包含有关插件注册的类型的元信息,但只能用在开发qml extension plugin时。
当我们仍需要从主程序(C++)用2.2.1的方法注册类型时,还是需要用C++来指定类型。
综上,仍然存在一个冗余类型规范的问题。
2.2.3 qmlplugindump工具
该工具将以与 QML 引擎加载插件相同的方式加载您的插件。
它将提取有关其中包含的所有类型的信息,以生成 plugins.qmltypes 文件。
缺点:
- 会在您的插件中执行不相关的代码,
- 不支持跨平台、也不适用于交叉编译构建
2.3 from 5.15
5.15中重新设计了注册系统:
- 停止使用2.2.1中列举的注册函数类型
- qqml.h提供了一组可以添加到类声明中的宏,可以将类型标记为导出到 QML。 比如说“QML_ELEMENT”。
- 添加“CONFIG += qmltypes”来触发实际注册
- 这种 QML 的 C++ 类型静态注册不仅会为插件生成 qmltypes 文件,还会为您的主应用程序生成 qmltypes 文件
//2023/9/20 编辑