qml 定义函数_Qml组件化编程5-Qml与C++交互

本文深入探讨了Qml与C++交互的各种方法,包括使用findChild和QQmlComponent。通过示例展示了如何在C++中访问Qml对象、属性、信号和函数,以及Qml如何调用C++的Q_INVOKABLE函数、槽和属性。文章还提到了涛哥的开源项目TaoQuick,它集成了Qml与C++交互的多种功能,并采用了DevOps理念。
摘要由CSDN通过智能技术生成

简介

本文是《Qml组件化编程》系列文章的第五篇,涛哥将教大家,Qml与C++的交互。

Qml已经有很多功能,不过终归会有不够用或不适用的地方,需要通过与C++的交互进行功能扩展。

这回涛哥尝试把所有Qml与C++交互相关的知识点都写出来,做一个透彻、全面的总结。

顺便说一下,涛哥的TaoQuick项目正式开源了, 系列文章中的所有功能,包括动态换皮肤、切换多语言等等,都集成在了TaoQuick中,

同时涛哥也在TaoQuick中使用了持续集成(CI)技术,目前已经能够自动编译、发布Windows和 Macos平台的软件包,可以在github的Release界面下载体验。

互联网行业很流行的DevOps理念,在TaoQuick项目中得到了最佳的实践。

(linux平台的发布工具linuxdeployqt暂时还有点问题,涛哥后续会搞定的)

地址在这,赶快去star吧:https://github.com/jaredtao/TaoQuick​github.com

C++访问Qml

c++访问Qml有两种方式: findChild和 QQmlComponent。

findChild

了解Qt的人都知道,Qt的很多对象是QObject的子类,这些QObject只要设置了parent,就是有父子关系的,会产生一棵 “对象树”。

只要有了根节点,树上的任意节点都可以通过findChild的方式获取到。

写个简单的TaoObject,来示意一下:

class TaoObject

{

public:

//构造函数,传递parent进来

TaoObject(TaoObject *parent = nullptr) : m_pParent(parent)

{

if (m_pParent)

{

m_pParent->appendChild(this);

}

}

//析构函数,析构children。即子对象自动回收机制。

~TaoObject()

{

for (auto *pObj : m_children)

{

delete pObj;

}

m_children.clear();

}

//获取name

const QString &getName() const

{

return m_name;

}

//设置name

void setName(const QString &name)

{

m_name = name;

}

//查找子Object

TaoObject *findChild(const QString &name)

{

//先检查自己的名字,是否匹配目标名字

if (m_name == name)

{

return this;

}

//遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值