1、1,Qtopia集成开发环境搭建,第一章,本章内容,QT、QTopia、QPE之间的关系 安装jpeg库、 KDevlope集成开发环境,3,Qt概念,Qt是挪威Trolltech公司的旗舰产品,作为跨平台开发框架,是开源KDE桌面的基石. Google Earch,Skype,Opera,Adobe Photoshop Element等著名软件都是基于Qt编写的.目前Qt最新版本为4.3.4 和java的”一次编写到处运行”所不同的是,Qt是源代码级的跨平台一次编写到处编译.一次开发的Qt应用程序可以移值到不同平台.目前Qt支持的平台有:Mac,Windows NT/2000/XP/Vist
2、a,unix,linux,嵌入式linux,Qt和Qtopia之间关系,Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。Qt/E(Qt/Embedded)是用于嵌入式Linux系统的Qt版本。Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高,但它并不是Qt的子集,而应该是超集,部分机制(如QCOP等)不能用于Qt/X11中。 Qtopia是一个构建于Qt/E之上的类似桌面系统的应用环境。相比之下,Qt/E是基础
3、类库。 Qtopia Core:就是原来的Qt/E,大概从Qt 4开始改名,把Qtopia Core并到Qtopia的产品线中去了。但实际上Qtopia Core就相当于原来的Qt/E,仍然作为基础类库。,Qtpioa安装,从网站上下载的qt文件qtopia-2.2.0.tar.gz,拷贝到一个单独目录中.推荐放在opt目录下单独解压.tar -zxvf qtopia-2.2.0.tar.gz 建立两个目录arm_qtopia和x86_qtopia目录把源码分别解压到两个目录中,后面我们会对其分别编译出x86仿真版和arm交叉编译版本 qtpioa安装之前需要下载3个补丁包并安装后才能正确编译
4、,6,安装Qt 续,编译Qt库,并且连编实例程序、教程和工具(比如Qt设计器),就像下面这样。 在解压目录中输入 ./configure -qte -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g+-exceptions -no-qvfb -xplatform linux-arm-g+ -tslib -qpe edition pda -displaysize 240x320 -fontfamilies “helvetica fixed micro smallsmoot
5、h smoothtimes unifont“ -xplatform linux-arm-g+ -luuid -qt2 -no-opengl -no-xft -dqt -no-xft -thread该命令会自动检测你目前linux操作系统具体配置情况 执行make命令生成qt和qtopia。 执行make install系统会把编译好的所有库文件拷贝到$QPEDIR/image目录下 在你主机中创建如下脚本文件中设置一些环境变量如下: export QTDIR=/opt/qte/arm_qtopia/qtopia2.2.0/qt2 export PATH=$QTDIR/bin:$PATH exp
6、ort QPEDIR = /opt/qte/arm_qtopia/qtopia2.2.0/qtopia export QMAKESPEC= $QPEDIR/mkspecs/qws/linux-arm-g+ export HOME=opt/qte/arm_qtopia/qtopia2.2.0/image/root export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH,7,几个有关qt环境变量,QMAKESPEC:这个必须设置为你所使用的系统的平台和编译器的组合。举例来说,加入你使用的是Windows和Microsoft Vi
7、sual Studio,你应该把环境变量设置为win32-msvc。如果你使用Solaris和g+,你应该把环境变量设置solaris-g+。 QTDIR:这个必须设置到Qt被(或者将被)安装到的地方。比如,/opt/qte/arm_qtopia/qtopia2.2.0/qt2一旦环境变量被设置到qmake目录,$QTDIR/qmake QPEDIR:这设置为Qtopia的实际安装目录,8,Qt主要开发工具,Kdevelopt IDEKDelvelopt 是Linux下开源IDE,目前最新版本为3.5.3,它的优点是专门为linux下编写c+的开发工具有速度快易调试等特点.但是没有代码职能感知
8、功能 Eclipse + C+Developt Tool(CDT)+qt插件 Eclipse是java开发的IDE工具.它能够通过插件方式支持多种语言如:c+,java,c.要运行Eclipse必须先安装jre.具有代码智能感知功能 Qdevelopt IDEQDevelop是专门用于Qt4开发的IDE环境。QDevelop基于Qt4核心,需要安装gcc编译器(windows为MinGW),还需要gdb提供调试功能和ctags实现代码补全功能。QDevelop目前支持英语、法语、德语、荷兰语、波兰语、西班牙语、中文、俄语、意大利语和乌克兰语。QDevelop是和Kdevelop无关的项目。它主
9、要专注于提供Qt的IDE开发环境。虽然还不完善,但是发展很快,并且跨平台。QDevelop和KDevelop具有完全不同的源代码。,9,Qt体系架构,Qt的整个设计都是以单根继承为主这跟java相同.所谓单根继承就是说所有的Qt类都有一个共同的祖先都是QObject类 QObject类后面有三个大的子类分别负责不同的功能它们是: QApplicaton:类管理图形用户界面应用程序和控制台程序的控制流和主要设置 QWidget:是所有用户界面对象的基类,负责管理图形界面 QLayout:负责管理所有图形界面的摆放方式,10,qmake工程文件,工程文件里包含了qmake建立你的应用程序(或者库,
10、插件)所需要的所有信息。你的工程所需的资源通常通过一系列的声明语句来描述,而简单的控制结构,可以实现在不同的平台和环境下,执行不同的编译流程。 qmake工程文件是以.pro为扩展名,11,qmake概述,qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。手写 Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。 Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具.当Qt被连编的时候,默认情况
11、下qmake也会被连编。 qmake使用储存在项目(.pro)文件中的信息来决定Makefile文件中该生成什么。,12,qmake工程文件样列,TEMPLATE = app TARGET =Hello world DEPENDPATH += .、 INCLUDEPATH += . SOURCES += hello.cpp HEADERS+ = hello.h FORMS += charGame.ui test_dynmaic.ui CONFIG += qt warn_on release CONFIG += qt debug CONFIG+= qt thread debug,13,pro文件
12、解释,TEMPLATE: 表示最终生成得目标文件类型app表示,最终生成得可执行文件 TARGET:目标名称是自动设置的,它被设置为和项目文件一样的名称,但是为了适合平台所需要的后缀。DEPENDPATH:应用程序所依赖的搜索路径 INCLUDEPATH:应用程序所需的额外的包含路径的列表 SOURCES:应用程序得源代码 HEADERS:应用程序用到得头文件 FORMS:应用程序用到得ui窗体文件 CONFIG: 包含Qt连接编译得一些配置信息包括: qt warn_on :编译器会输出尽可能多的警告信息 qt warn_off :编译器会输出尽可能少的警告信息 qt debug:应用程序将
13、以debug模式连编。 qt thread debug :连编为一个可调试的多线程的应用程序,14,Qt2包含的模块,QtCore 和图形无关的核心模块 QtGui 所有的图形模块 QtNetWork 网络相关的模块 QtOpenGL 支持OpenGL QtSql QT支持数据库开发模块 QtSvg 定义和生成SVG类 QtXML 读取XML文件模块 QtDesigner Qt的图形界面设计 QtUiTool 定义在应用程序中直接处理ui文件的类 Qt3Support Qt3版本的支持 QtAssistant 定义和扩展Qt设计器的类,15,qmake命令,Qmake可以根据实际文件自动生成相
14、对应makefile文件.命令格式:qmake options files,16,Qt体系架构图,qmake编译qt次序,首先使用qmake project选项命令,根据当前源代码生成后缀名为pro的工程文件 其次再次调用qmake 命令或者执行 qmake o Makefile helloworld.pro 自动生成Makefile文件,Qtopia添加线程支持,由于qtopia 2.2.0的makefile里的问题,现在只能自己手动编译出支持thread的libqte-mt.so. 进入qtopia-2.2.0-FriendlyARM/qt2目录手动配置来支持multi-thread: 如
15、果编译的是x86版本那么执行./configure -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif -thread 如果编译的是arm版本那么执行./configure -embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g+-exceptions -no-qvfb -xplatform linux-arm-g+ -tslib -thread 上面的步骤执行后会在当前目录下产生src-mt.mk文
16、件,用编辑器将其内容的最后一行”cd src; $(MAKE) clean“删除或注释掉 编译libqte-mt:make src-mt 编译完成后将在qtopia-2.2.0- FriendlyARM/qtopia/lib目录下生成所期待的libqte-mt.so.*文件。,19,第一个程序 Hello world,#include #include Int main(int argc,char *argv) QApplication a( argc, argv ); QWidgtet widget;widget.resize( 100, 300 ); widget.show();return a.exec(); ,