当前位置: 首页 > news >正文

在 QML 中使用 C++ 类和对象

1.实现 C++ 类,从 QObject 或 QObject 的派生类继承
类中第一行添加  Q_OBJECT 宏

2.修饰成员函数或属性
Q_INVOKABLE 宏用来定义可通过元对象系统访问的方法
Q_PROPERTY 宏用来定义可通过元对象系统访问的属性
信号或者槽,都可以直接在 QML 中访问

3. 在C++中注册,头文件中需 include<XX.h> (有时候Qt Creator可以识别,但是不添加头文件可能会报错

使用如下注册:
setContextProperty、qmlRegisterType、qmlRegisterUncreatableType等

注册实例化类型
qmlRegisterType()将类作为QML类型注册到特定的类型名称空间中

注册非实例化类型
有时,可能需要向QML类型系统注册QObject派生类时不希望将其注册为可实例化类型。比如一个C++类:

是不应实例化的接口类型
是不需要暴露给QML的基类类型
声明一些能从QML访问的枚举,但自己不应该被实例化
一个应该通过单例实例提供给QML的类型,并且不应该从QML实例化
Qt QML模块提供了几种注册非实例化类型的方法:

qmlRegisterType()(不带参数)注册一个不可实例化且无法从QML引用的C++类型。这使引擎能够强制执行可从QML实例化的所有继承类型。
qmlRegisterInterface()使用特定的QML类型名称注册Qt的接口类型。类型不能从QML实例化,但可以通过其类型名引用。
qmlRegisterUncreatableType()注册一个C++类型,该类型不可实例化,但应可识别为QML类型系统的类型。如果类型的枚举或附加属性应该可以从QML访问,但是类型本身不应该是可实例化的,那么这很有用。
qmlRegisterSingletonType() 注册可以从QML导入的单例类型。


4.在QML中使用import引入模块名
5.在QML中调用

参考:【QML与C++混合编程】在 QML 中使用 C++ 类和对象(一)

http://www.lryc.cn/news/411818.html

相关文章:

  • 什么是接口?
  • 传统自然语言处理(NLP)与大规模语言模型(LLM)详解
  • 实现Obsidian PC端和手机端(安卓)同步
  • 基于大模型的 Agent 进行任务规划的10种方式
  • 计算机网络01
  • 基于SpringBoot微服务架构下前后端分离的MVVM模型浅析
  • 44444444444
  • 数据结构与算法-二分搜索树节点的查找
  • C++|设计模式(七)|⭐️观察者模式与发布/订阅模式,你分得清楚吗
  • 计算机毕业设计选题推荐-学院教学工作量统计系统-Java/Python项目实战
  • 人机交互不仅仅是科技问题
  • Lua Debug.GetInfo
  • 每日刷题(最短路、图论)
  • 远程服务器训练网络之tensorboard可视化
  • MySQL锁详解
  • 面试问题记录:
  • vue如何在组件中监听路由参数的变化
  • antd中form表单校验文件上传
  • 商家转账到零钱2024最新开通必过攻略
  • 2024全新Thinkphp聊天室H5实时聊天室群聊聊天室自动分配账户完群组/私聊/禁言等功能/全开源运营版本
  • (一)javascript中class类
  • 【注意力MHA,MQA,GQA,MLA】
  • 《从零开始做个摸鱼小网站! · 序》灵感来源
  • 计算机基础(Windows 10+Office 2016)教程 —— 第5章 文档编辑软件Word 2016(上)
  • 短视频矩阵管理系统源码:实现短视频内容全面布局
  • 系统设计中15 个最重要的权衡
  • 12年外贸实战经验,一定对你有帮助!
  • Linux---进程(3)---进程状态
  • Drools规则引擎实现停车计费
  • 【python虚拟环境】安装第三方包失败/failed with error code1