在利用
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()把id为label