QtopiaPhone应用程序编写入门.docx
- 文档编号:2844195
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:34
- 大小:193.19KB
QtopiaPhone应用程序编写入门.docx
《QtopiaPhone应用程序编写入门.docx》由会员分享,可在线阅读,更多相关《QtopiaPhone应用程序编写入门.docx(34页珍藏版)》请在冰豆网上搜索。
QtopiaPhone应用程序编写入门
By:
陆云波王少军宁显明黄小燕
QtopiaPhone应用程序编写指导
1QtopiaPhone开发环境的搭建2
1.1Linux的安装2
1.2Qtopia的安装2
1.3环境变量的设置2
1.4搭建编辑环境4
2简单例子4
2.1Phone应用的基本构成4
2.2ui文件4
2.3主窗口类6
2.4main函数8
2.5编译8
2.6安装9
2.7运行及结果10
2.8将应用添加到Qtopia工程中10
2.9快速加载12
3软按键的设置13
3.1软按键显示及其事件分发原则13
3.2控件的模式14
3.3ContextBar(上下文按钮或软按键)14
3.4上下文菜单(ContextMenu)15
3.5例子15
4应用程序标题栏的设置16
5编辑控件与输入法的关联17
5.1Qtopia的输入法提示17
5.2输入法提示例子17
6其它相关技术18
6.1信号与槽18
6.2QCop的使用18
6.3Qtopia应用的汉化18
6.4Qtopia提供的调试技术19
6.4.1命令行参数19
6.4.2警告与调试信息19
6.4.3调试宏19
6.5Service的使用20
6.5.1服务的请求方法20
6.5.2服务的定义和注册。
20
6.5.3Qtopia已定义的服务22
6.6Plugin的制作23
6.6.1任务分析23
6.6.2对接口类实现23
1QtopiaPhone开发环境的搭建
QtopiaPhone开发环境的搭建包括Linux安装、Qtopia的安装、环境变量的设置,以及为方便编程搭建相关环境。
1.1Linux的安装
Linux目前大部分都是安装在虚拟机上,关于虚拟机及Linux的安装可以参考朱晓华编写的安装说明:
《虚拟机Linux安装指南.doc》
建议安装RadhatLinux9.0,Linux内核版本2.4.20以上。
1.2Qtopia的安装
Qtopia完整的安装要依次编译tmake、Qt/X11、Qt/Embedded及Qtopia,关于这一过程在Qtopia目录下的Readme.html有详细说明,在王少军的《Qtopia图形系统和应用开发.doc》也有较详细的说明。
但是这一过程,比较麻烦也比较费时,而且也容易出错。
目前的解决办法是统一编译,然后打包供各开发人员使用,开发人员只要解压到相应目录就可以使用。
目前宁显明编译包qtopia-phone-1.9.0.20040202.tar.gz(在ftp:
//10.61.22.9/incoming可以下载),开发人员只要将此文件下载到Linux根目录,然后运行如下命令即可:
#tarxzfvqtopia-phone-1.9.0.20040202.tar.gz
运行结束后,在/opt目录下会生成qt-2.3.2(x11目录)、qt-2.3.8-snapshot-20040130(Qt/E目录)、tmake-1.13(tmake目录)、qtopia-source-1.9.0(Qtopia目录)。
1.3环境变量的设置
各个Qtopia版本的环境变量设置基本一致,只是个别变量稍有不同,以后在发布安装包时同时给出各个环境变量的设置说明。
目前宁显明编译的版本环境变量设置如下:
exportQPEDIR=/opt/qtopia-source-1.9.0
exportQTEDIR=/opt/qt-2.3.8-snapshot-20040130
exportQTDIR=$QTEDIR
exportTMAKEDIR=/opt/tmake-1.13
exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportLD_LIBRARY_PATH=$QPEDIR/lib:
$QTEDIR/lib:
/opt/qt-2.3.2/lib
exportPATH=$QPEDIR/bin:
$QTEDIR/bin:
$TMAKEDIR/bin:
$PATH
exportQTOPIA_PHONE_DEVICE=sim:
localhost
为了使用方便,可以将这些变量输出添加到/etc/profile文件中。
这样系统启动后,这些环境变量就自动设置好。
由于此版本(可能包括以后的版本),编译时需要的环境变量与运行时需要的环境变量不太一样(差别在$QPEDIR),所以运行Qtopia时专门做了脚本程序,为/opt/startphone。
直接运行此脚本就可以运行Qtopia。
以下为/opt/startphone脚本程序
#!
/bin/sh
exportQPEDIR=/opt/qtopia-source-1.9.0/image/opt/Qtopia
exportQTEDIR=/opt/qt-2.3.8-snapshot-20040130
exportQTDIR=$QTEDIR
exportTMAKEDIR=/opt/tmake-1.13
exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportLD_LIBRARY_PATH=$QPEDIR/lib:
$QTEDIR/lib:
/opt/qt-2.3.2/lib
exportPATH=$PATH:
$QPEDIR/bin:
$QTEDIR/bin:
$TMAKEDIR/bin
exportQTOPIA_PHONE_DEVICE=sim:
localhost
findproc(){
/bin/ps-e|/bin/sed-n-e'/\<'$1'\>/s/^*\([0-9][0-9]*\).*/\1/p'
}
killproc(){
pid=`findproc$1`
["$pid"!
=""]&&kill$pid
}
echo"Stoppingcommonsounddeamons..."
artsd_pid=`findprocartsd`
["$artsd_pid"!
=""]&&kill$artsd_pid
esd_pid=`findprocesd`
["$esd_pid"!
=""]&&kill$esd_pid
echo"Stoppingphonesimulator..."
killprocphonesim
echo"Startingqvfb..."
qvfb-skin$QTEDIR/tools/qvfb/SmartPhone.skin&
echo"Startingphonesimulator..."
phonesim$QPEDIR/etc/troll.xml&
sleep5s
echo"StartingQtopiaPhone..."
qpe&
echo"Stoppingphonesimulator..."
#killprocphonesim
echo"Restartingkilledsounddeamons..."
["$artsd_pid"!
=""]&&artsd&
["$esd_pid"!
=""]&&esd&
1.4搭建编辑环境
Linux环境下使用得最多的编辑器vi,对很多人而言,使用起来很不方便。
事实上,可以使用很多人更为熟悉的Windows操作系统下的各种编辑工具,而唯一需要做的工作是配置Linux,使得Windows操作系统能访问及修改Linux操作系统的文件。
常用的方法有两种,一种是在Linux开通Ftp服务,在Windows操作系统中使用UltraEdit编辑工具,关于这个方法,在黄小燕编写的《Qt开发入门.doc》有详细介绍。
另一种方法是采用samba实现局域网文件共享,如何配置samba在吴飞完成的《使用samba在linux和windows之间共享.txt》有详细说明。
2简单例子
为了更好地理解QtopiaPhone应用,本节举例说明一个简单QtopiaPhone应用的编写、编译及安装,最后讨论如何将应用添加到QtopiaPhone应用中和其它一些常见问题。
2.1Phone应用的基本构成
基本构成有头文件,C++源文件,ui文件,pro文件,图标文件,帮助文件,Desktop文件,各文件的书写及解释。
为了简单,此节不涉及图标文件、帮助文件的相关操作。
2.2ui文件
ui为userinterface,即用户界面的缩写,由QtDesigner生成,通过QtDesigner可以可视化设计用户界面。
有关QtDesigner的使用可以参考《Qtopia图形系统和应用开发.doc》第12.5节或$QTEDIR\doc\html\designer.html。
下图为本节例子设计的用户界面,界面比较简单,只有两个控件,一个为多行文本,一个为按钮,如图所示:
图1使用QtDesigner生成用户界面
ui文件将由Makefile调用uic生成一个界面类(对应有头文件和源文件),类的名称为窗口的属性name,对应的头文件及源文件的文件名也是窗口的属性name;每个控件对应的类的数据成员名称也是该控件的属性name指定。
如本例,生成的并头文件及源文件如下(已去除文件头部:
//examplebase.h
#ifndefEXAMPLEBASE_H
#defineEXAMPLEBASE_H
#include
#include
classQVBoxLayout;
classQHBoxLayout;
classQGridLayout;
classQMultiLineEdit;
classQPushButton;
classExampleBase:
publicQWidget
{
Q_OBJECT
public:
ExampleBase(QWidget*parent=0,constchar*name=0,WFlagsfl=0);
~ExampleBase();
QPushButton*buttonOk;
QMultiLineEdit*medit;
};
#endif//EXAMPLEBASE_H
//examplebase.cpp
#include"examplebase.h"
#include
#include
#include
#include
#include
#include
/*
*ConstructsaExampleBasewhichisachildof'parent',withthe
*name'name'andwidgetflagssetto'f'
*/
ExampleBase:
:
ExampleBase(QWidget*parent,constchar*name,WFlagsfl)
:
QWidget(parent,name,fl)
{
if(!
name)
setName("E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QtopiaPhone 应用程序 编写 入门