Sysbian UIQ 初学者学习引导(一)
来源:互联网 发布:java远程执行perl脚本 编辑:程序博客网 时间:2024/06/06 07:17
1 UIQ程序结构
1.1 总述
UIQ程序是面向对象的,一个程序应至少有四个类:Application Class、Document Class、AppUI Class 和View Class。其继承关系如下图:
上图中绿颜色的类是UIQ应用程序开发者自己编写的类。QikAppUi, CQikDocument 和 CQikApplication是由Qikon提供。
各部分功能模块相互关系如下:
1.2 主要类调用流程
1.2.1 主要类执行流程
程序入口à ApplicationClassàDocumentClassàAppUiClassàViewClass
1.2.2 UIQ应用程序入口
/**
E32Main()包含程序的起动代码,EXE执行入口。
E32Main() contains the program's start up code, the entry point for an EXE.
*/
GLDEF_C TInt E32Main()
{
return EikStart::RunApplication(NewApplication);
}
CApaApplication* NewApplication()
{
return new CHelloWorldApplication;
}
1.2.3 关于Application Model
当应用程序比较大、所要处理的数据比较多时,就会用到Application Model这个类。
Application Model主要是容纳应用程序中的数据。这种Model是用来分离UI Code和应用程序。这样的目的是,当更换UI时,就不需要改变处理数据的代码。
Application Model声明一般如下:
class CListBoxModel : public CBase
{
public:
static CListBoxModel* NewL();
~CListBoxModel();
public:
/*成员声明*/
private:
/*成员声明*/
};
Application Model与其它类有如下几个主要关联:
Ø 应用程序中DocumentClass类构造拥有这个Model;
Ø AppUi类中包含有一个指向该Model的指针或Model的引用;
Ø AppUI接受由ViewClass传递过来的用户命令,并调用适当的Model中的函数来处理用户命令。
Ø Views(in the GUI framework sense)也包含Model的指针或引用。Views调用Model中合适的成员函数来处理用户命令。Views也能决定传递给AppUI的用户命令。
1.3 构造四个主要类
1.3.1 构造Application Class
UIQ应用程序中的Application都是继承于CQikApplication这个类,并且要重载CQikApplication类中的两个纯虚函数:
- CQikApplication::AppDllUid()
- CQikApplication::CreateDocumentL()
AppDllUid()函数由应用程序构架来调用,验证个应用程序的身份。这个函数执行后返回应用程序的UIQ。
CreateDocumentL()也是由应用程序来调用的,用来创建和程序相关的文档对象。执行这个函数后,应返回指向本应用程序中Document类的指针,如下:
class CExampleApplication : public CQikApplication
{
private:
//CreateDocumentL calls for NewL in CExampleDocument
CApaDocument* CreateDocumentL();
//Returns the Uid of the application.
TUid AppDllUid() const;
};
// 1. Gets the application UID
TUid CExampleApplication::AppDllUid() const
{
return KUidApp; // The same UID as is declared in the mmp file.
}
// 2. Gets a new document object.
CApaDocument* CExampleApplication::CreateDocumentL()
{
return new (ELeave) CExampleDocument(*this);
}
1.3.2 构造Document Class
class CExampleDocument : public CQikDocument
{
public:
// Constructor.
CExampleDocument(CEikApplication& aApp);
private: // From CEikDocument.
CEikAppUi* CreateAppUiL();
};
// 1. Document constructor.
CExampleDocument::CExampleDocument(CEikApplication& aApp) : CQikDocument(aApp)
{
}
// 2. Create appUI.
CEikAppUi* CExampleDocument::CreateAppUiL()
{
return new (ELeave) CExampleAppUi;
}
1.3.3 构造AppUi Class
class CExampleAppUi : public CQikAppUi
{
public:
// Second-phase constructor.
void ConstructL();
private:
CExampleAppView* iAppView;
};
一般要在AppUI类中的ConstructL()函数中创建View对象,如下:
void CMyDirectoryAppUi::ConstructL()
{
//Create the ListView and attach it.
//This will become the default view since we are adding it first
CExampleAppView* iListView = CExampleApptView::NewLC(*this, KNullViewId, Model);
AddViewL(*iListView);
CleanupStack::Pop(iListView);
}
1.3.4 构造View Class
class CExampleView : public CQikViewBase
{
private:
void ConstructL();
protected:
TVwsViewId ViewId()const;
void ViewContructL();
};
1.3.5 构造ModelClass
class CListBoxModel : public CBase
{
public:
static CListBoxModel* NewL();
~CListBoxModel();
public:
/*成员声明*/
private:
/*成员声明*/
};
- Sysbian UIQ 初学者学习引导(一)
- Sysbian UIQ 初学者学习引导(二)
- UIQ
- 笔记:github学习(初学者一)
- 初学者前端开发学习(一)
- MMI of UIQ (1)
- MMI of UIQ (2)
- #引导方案(一)#
- linux 0.12 源码学习笔记(一)内核引导
- netty源码学习一(Serverbootstrap引导程序)
- OGRE初学者引导
- wxpython初学者(一)
- Django初学者(一)
- eclipse初学者(一)
- maven初学者(一)
- 一个Jsp初学者的学习过程(一)
- ruby学习笔记(一)——初学者教程
- 回顾ext学习过程的一些感受(一)初学者
- Linux关机命令详解
- 我的Blog开张!开Blog大吉
- 如果搞一个免费的J2ME入门培训,你有兴趣参加吗?
- 浅谈JavaBean之scope
- C#图像处理
- Sysbian UIQ 初学者学习引导(一)
- Sysbian UIQ 初学者学习引导(二)
- 这样的收费合理吗?
- RapGet v1.00 beta 2
- 电子类术语
- 初步设置
- Java开发工具
- 各种数据库的连接大全!
- 注册表被禁用