在QML中调用 C++ 函数的方法(四)

本文详细介绍了在QML中如何调用C++实现的函数,包括Q_PROPERTY暴露属性、Q_INVOKABLE修饰的槽函数和信号。通过实例展示了创建QML类型、注册到QML并实现交互的过程,强调了不同Qt版本中使用qmlRegisterType的注意事项。
摘要由CSDN通过智能技术生成


前言

本文主要介绍如何在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 的描述, 主要是暴露三种类型:

  1. Properties
  2. Methods(槽函数和Q_INVOKABLE 修饰的函数)
  3. 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 工程

详见我之前的文章 使用Qt Creator 创建 一个 QML 工程(一)

3.2 创建一个由C++ 实现的QML Type

创建一个名为MyType的 QML Type, 右击工程名,选择Add New, 如下图所示
在这里插入图片描述
然后选择 C++ Class, 如下图所示
在这里插入图片描述
然后设置Class 名为MyType, Bass class 选择 QObject, 点击下一步后,就会在当前工程中生成名为mytype.h 和 mytype.cpp 的文件
在这里插入图片描述

生成mytype.h 和 mytype.cpp 的文件后,修改mytype.h 和 mytype.cpp 的内容如下
这里使用 Q_INVOKABLE 来暴露c++ 的函数给QML

#ifndef MYTYPE_H
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值