目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发
分类: LINUX
2009-10-26 15:58:15
以前因为qtopia以及qt embedded (qtopia core)都是商业的,所以大家做项目都会选择qtopia,毕竟qtopia做了一些工作。但{BANNED}{BANNED}{BANNED}{BANNED}{BANNED}{BANNED}{BANNED}最佳佳佳佳佳佳佳近qt framework (有embedded版本)是LGPL后,我们就得考虑一下在项目中可不可以不用qtopia而用qt embedded了?
那么qtopia到底为我们做了些什么呢?这些东西在你的项目中用了吗?
qtopia 是以qt embedded 为基础类库的。其层次架构为:
qtopia Application
===========================
Qtopia platform
------------------------
Qtopia core (qt embeded)
其中Jave程序在qt embedded 上面,而其他的程序可以基于qtopia platform ,也可以基于qt embedded .
以Qt extended 4.4.2为例。在qtopiacore 目录下,包括了dbus , qt3 支持,ttif , jpeg,png,gif,svg等图像格式的支持, zlib ,xml ,sql (sqlite),freetype的支持,以及webkit的支持都在qtopia core里。并支持key, mouse 驱动的plugins .
Qtopia platform提供了:
1) Quick Laucher
代码在src/tools/quicklaucher下面。
以前qtopia应用程序启动较慢的原因主要有装载和连接动态库的时间,而Quick Laucher 通过将应用程序作为一个共享库运行的方法来减少启动时间。create一个stub(桩)应用程序laucher,它连接大部分的通用库等.
在server启动的时候,laucher也启动了,然后收到一个请求 (通过QCopChannel),要启动App1 , 它马上去加载App1 .so , 然后修改应用程序名字laucher为 App1 。
对于应用程序的改动主要有2个macro :
QTOPIA_MAIN
QTOPIA_ADD_APPLICATION
在.pro文件中
DEFINES += QTOPIA_APP_INTERFACE (此时应用程序做为一个插件了)
插件放在 /QTOPIADIR/plugins/application目录下。
2) plugin (输入法 etc )
在src/plugins/下面,qtopia实现了很多插件,比如输入法,网络 (LAN等),不过在qt里面也有输入法插件。
比如输入法插件的一种,Creat an InputMethodInterface A ,另外一个类B (QWidget), class B 实现input method 界面,以及keyPress singal的发出, B 作为A的成员 。
然后在.pro文件中加上
CONFIG += qtopiaplugin
这样将生成.so (.dll in windows os) ,放在/opt/qtopia/plugins/inputmethods/下面。
3) Server (如key click做为一个server,按键的时候发声,AlarmServer)
Server可以看成后台的一些tasks ,他们一直在运行
4) service
一个应用程序 提供某种服务A , 然后别的应用程序可以申请服务A (也是通过QcopChannel机制)
可以这样理解 :
server 提供 service , 一个server可能提供多个service
比如 qpe server , 提高alarm server 等等....