C++与QML的集成

本文介绍了如何在C++中加载和修改QML文件,包括加载QML、修改属性、访问子对象、暴露C++值和对象给QML、在QML中使用C++类等,详细阐述了C++与QML交互的各种方法和技术要点。
摘要由CSDN通过智能技术生成

在利用 Cascades 进行开发的时候,我们可以用纯 C++ ,也可以混合使用 QML C++ ,不过,我认为混合的效率会更高:一方面, QML 可以直接预览界面效果;另一方面,混合可以提高并行开发度(界面设计和逻辑代码可以由不同人员同时开发)。

而在混合使用时,遇到的几个问题无非就是:

怎样把QML文件加载到C++中,把它的内容显示出来。

C++QML之间值的传递是怎样实现的。

针对这两点,同时加上对官网给出的教程,我也和大家分享一下我的理解。




C++中加载QML


我们先新建一个名为test的标准空白项目(默认的功能是在屏幕上显示”helloworld”):

File->New->Blackberry Project->Cascades->Next->Standard empty project(空白项目)->输入项目名称test->Finish

项目建立后,我们查看Tset.cpp(在最新的NDK会变成applicationui.cpp

    QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
    // create root object for the UI
    AbstractPane *root = qml->createRootObject<AbstractPane>();
    // set created root object as a scene
    app->setScene(root);

从这里可以看出,加载QML文件有三个步骤

1、创建一个QmlDocument对象,指定你的QML文件路径(注意路径格式)。

2、使用对象的createRootObject()方法创建QML文件内容的根节点。

3、通过setScene()方法把该根节点显示出来。

通过这三个步骤,就能把QML的内容完全显示到屏幕上了。




修改QML的属性


通过setProperty()方法能够在C++中修改QML的一些属性,但是有三个前提:

1、使用这个方法的对象必须属于QObject

2、QML中组件必须有一个id

3、在QML中为属性设置一个别名

下面这个例子,通过setProperty()idlabel

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值