文章目录
- 前言
- 一、qml 和 c++ 交互的官方文档介绍
- 二、QML 中调用 C++ 实现的函数的方法
- 1. Exposing Attributes of C++ Types to QML
- 1.1 暴露 Properties
- 1.2 暴露 Methods(槽函数和Q_INVOKABLE 修饰的函数)
- 1.3 暴露 Signals
- 2. Defining QML Types from C++
- 3. 代码实例
- 3.1 创建一个QML 工程
- 3.2 创建一个由C++ 实现的QML Type
- 3.3 运行结果
- 总结
- 参考资料
前言
本文主要介绍如何在QML 中调用C++ 代码中实现的函数,至于C++ 中如何调用 QML 后续的文章会进行介绍
软硬件环境:
硬件:PC
软件:windows11 Qt5.12.2
一、qml 和 c++ 交互的官方文档介绍
目前Qt 应用的框架是,qml 负责UI ,则C++负责具体的后台逻辑, 故它俩之间的交互对 Qt 至关重要
如下图所示, 是Qt 帮助文档中对 QML 和 C++ 交互的方法的相关介绍
二、QML 中调用 C++ 实现的函数的方法
1. Exposing Attributes of C++ Types to QML
如下图所示,是Qt 官方帮助文档对 暴露 C++ 的属性到QML 的描述, 主要是暴露三种类型:
- Properties
- Methods(槽函数和Q_INVOKABLE 修饰的函数)
- Signals
1.1 暴露 Properties
暴露 Properties 使用的是 Q_PROPERTY() macro,如下图所示,是Qt 官方帮助文档的相关描述
1.2 暴露 Methods(槽函数和Q_INVOKABLE 修饰的函数)
如下图所示,是Qt 官方帮助文档对暴露 Methods 的相关描述
1.3 暴露 Signals
如下图所示,是Qt 官方帮助文档对暴露 Signals 的相关描述
2. Defining QML Types from C++
如下图所示,是Qt 官方帮助文档对定义一个由C++ 实现的QML Types 的相关描述
如下图所示,是Qt 官方帮助文档对注册一个由C++ 实现的QML Types 的相关描述,主要是用 qmlRegisterType()来实现的
Qt 官方实例如下图所示
3. 代码实例
3.1 创建一个QML 工程
详见我之前的文章