`
阿尔萨斯
  • 浏览: 4170076 次
社区版块
存档分类
最新评论

BB10 Cascades Hello World样例分析

 
阅读更多

BB10 Cascades Beta2开发环境提供了多个样例,为了更好地理解不同样例,我们可以分析一下最简单的样例,从而了解BB10 Cascades应用的基本框架。

BB10 Cascades Beta2中通过“File -> New -> BlackBerry Cascades c++ Project”创建,在选择模板时选择“Standard empty project”就可以了,具体细节参见之前的博文。

该样例运行起来是一个白色屏幕,屏幕上有“Hello World”字样。

样例的入口在src目录的main.cpp文件中,代码很简单,如下:

#include"app.hpp"

#include<bb/cascades/Application>
#include<QLocale>
#include<QTranslator>

using ::bb::cascades::Application;

int main(int argc, char **argv)
{
    //-- this is where the server is started etc
    Application app(argc, argv);

    //-- localization support

    QTranslator translator;

    QString locale_string = QLocale().name();

    QString filename = QString( "FirstHello_%1" ).arg( locale_string );

    if (translator.load(filename, "app/native/qm")) {

        app.installTranslator( &translator );

    }

    App mainApp;

    //-- we complete the transaction started in the app constructor and start the client event loop here

    returnApplication::exec();

    //-- when loop is exited the Application deletes the scene which deletes all its children (per qt rules for children)

}

main.cpp中首先包含一些需要使用的头文件,<bb/cascades/Application><QLocale>

<QTranslator>这三个是系统头文件,包括了Cascades中主要的程序框架Application和一些本地化需要使用的头文件。另外导入了“App.hpp”,这个文件也在src目录中,是本样例真正的入口。

然后声明在本文件中需要使用类Applicationusing语句如下:

using ::bb::cascades::Application;

接着就是程序入口了,和一般的main方法没有太大不同。Main方法中主要就是下面三行语句,其它的可以暂时不管它。

下面三行语句用于建立运行环境,建立应用实例,然后进入事件循环:

Application app(argc, argv);

App mainApp;

returnApplication::exec();

因为大部分简单的Cascades程序都是通过这些方法启动,所以不需要太关注每行语句对应的底层细节,那些底层细节可以等以后再分析。目前可以将以上启动应用的语句当作例行的工作。

进一步需要关注的就是src目录下的app.cpp app.hpp两个文件了。样例的应用类就是通过这两个文件定义的。

app.hppApp类的头文件,打开看会发现该文件很简单,就是定义一个App类,继承自QObject,另外需要留意的是类定义中插入了Q_OBJECT宏,插入这个宏的目的是将这个类定义成一个Qt类,对Qt有一些了解的同学一定对这个比较熟悉。

然后再看看app.cpp文件,文件中定义了App类的构造函数,函数实现如下:

App::App()

{

    QmlDocument *qml = QmlDocument::create("main.qml");

    AbstractPane *root = qml->createRootNode<AbstractPane>();

    Application::setScene(root);

}

App构造函数中的第一句用于载入名为main.qml的文件,文件main.qml定义了主屏幕的细节,包括我们看见的“Hello World”标签,有关main.qml一会我们再详细讨论。

载入main.qml后由指针qml保存,接着通过createRootNode<AbstractPane>方法获得mail.qml中定义的主面板。注意createRootNode<AbstractPane>是模板函数createRootNode的特例化,通过AbstractPane进行,而Cascades中的面板类的组件都是AbstractPane的子类。

获得main.qml中的主面板后通过Application的静态方法setScene()将主面板显示出来。

具体main.qml中定义了那些元素呢,我们可以打开assets目录中的main.qml文件来看看,内容很简单,全部显示如下:

import bb.cascades 1.0

//-- create one page with a label and text

Page {

    content: Label {

        text: qsTr("Hello world")

    }

}

第一句是导入bb.cascades 1.0包,这样才可以使用Cascades中的组件,然后定义了一个Page元素,Page元素的content属性,也就是内容属性指定为一个Label组件,该Label组件的text属性指定为一个“Hello world”字符串。

以上就是BB10 Cascades Hello World样例的全部内容了,是不是很简单呢?后面有机会我们再看看如何在BB10 Cascades 开发环境中使用Page, Label等组件,同样是非常简单呢!!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics