原创 linux下的X11图形系统介绍之Qt图形库

2006-11-8 11:33 8322 11 11 分类: MCU/ 嵌入式

注:如转载请注明本Blog的链接http://www.ednchina.com/blog/zxq914


 


Qt是由挪威TrollTech公司开发的跨平台C++图形用户界面开发工具,也是该公司的一个标志性产品,有商业版和免费的版本两种,程序开发员利用Qt可以编写单一代码的应用程序,并可在Windows,Linux,Unix,Mac OS X和嵌入式Linux等不同平台上进行本地化运行。目前,Qt已被成功地应用于全球数以千计的商业应用程序。此外,Qt还是开放源代码KDE桌面环境的基础。TrollTech公司在1995年推出了Qt的第一个商业版本,直到现在Qt已经被世界各地跨平台的开发人员所使用,而Qt的功能也得到了不断的完善和提高。Qt以工具开发包的形式提供给开发者,这些开发包包括了图形设计器、Makefile制作工具、字体化国际工具和QtC++类库等,Qt的一个显著特点是跨平台特性,目前Qt支持的操作系统平台包括:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1.       Windows系列


2.  Unix/Linux/Solaris


3.  包含有FramBuffer(帧缓冲)的嵌入式linux平台


4.  Macintoshi Mac OSX


Qt对不同平台(Unix, Windows,Mac)的专门API进行了封装,如文件处理、网络(操作,协议),进程处理、线程、数据库访问等。Qt是以工具开发包的形式来提供给开发者的,这些开发工具包括了图形设计器、Makefile制作工具、字体国际化工具,以及C++类库等。Qt的类库也等价于windows平台下的MFC开发库,但是Qt的类库是支持跨平台的类库,它封装了可以适应不同操作系统的访问细节。


从本质上讲,QtX Window上的OpenwinGTK 等图形界面库和Windows平台上的MFCOWLVCLATL是同类型的东西,但是Qt也具有其独特的优点:


1.     优良的跨平台特性:


2.     面向对象特性


Qt的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots(信号与插槽机制)的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。


3.     丰富的API


Qt包括多达250个以上的C++类,还替供基于模板的collectionsserializationfileI/O devicedirectory managementdate/time类。甚至还包括正则表达式的处理功能。


4.     支持 2D/3D图形渲染,支持OpenGL


5.     大量的开发文档


6.     XML支持


如果系统中安装了Qt之后,可以看到其启动界面如下图所示:


点击看大图


linux下安装Qt/Embedded开发环境主要需要三个软件:tmake工具安装包;Qt/Embedded安装包;QtX11版的软件安装包,以下列举了上述几个软件包及其版本号:


1.       Tmake 1.11(或更高版本)软件包(主要用来生成Qt/Embedded应用工程的Makefile文件


2.  Qt/Embedded <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2.3.7Qt/Embedded的安装包)


3.  Qt 2.3.2 for X11QtX11版的安装包,它将产生X11开发环境所需的两个工具)


以上这些软件可以从trolltechWEBFTP服务器上免费下载。



需要注意的是,由于上述软件安装包有许多不同的版本,由于版本的不同可能会造成潜在的冲突而影响使用,一个基本的原则是:选择的Qt for X11的安装包应该比Qt/Embeedded的安装版本要旧,这是由于Qt for X11安装包的两个工具uicdesigner产生的的源文件会和Qt/Embedded的库一起被编译链接,也就是考虑到“向前兼容”的原则。


目前,Qt/Embedded可以运行在inux所支持的各种处理器上,包括像Intel X86ARMMIPSPowerPC等处理器上。Qt/Embedded对内存的消耗很低,因为它不需要X服务器或是Xlib库,可以直接的写缓冲帧,对于不使用的功能可以在编译的时候动态调节从而尽可能的减少对内存的使用,例如,在实际使用过程当中不想使用QlistView这个库,可以通过定义一个QT_NO_LISTVIEW的预处理标记来实现。它甚至可以把全部的应用功能编译链接到一个简单的静态链接的可执行程序中。Qt/Embedded提供了大约200多个可配置的特征,在Intel X86平台上库的大小范围会在700KB5000KB之间。


以下是上面几个软件包的安装过程:


1.       安装tmake


在终端下运行以下命令:


tar xfz tmake-1.11.tar.gz


export TMAKEDIR=$PWD/tmake-1.11


export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++


export PATH=$TMAKEDIR/bin:$PATH


2.       安装Qt/Embedded 2.3.7


在终端下运行以下命令:


tar xfz qt-embedded-2.3.7.tar.gz


cd qt-2.3.7


export QTDIR=$PWD


export QTEDIR=$QTDIR


export PATH=$QTDIR/bin:$PATH


export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH


./configure -qconfig -qvfb -depths 4,8,16,32


make sub-src


cd ..


上述命令./configure -qconfig -qvfb -depths 4,8,16,32 指定Qt 嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持481632 位的显示颜色深度。另外也可以在configure 的参数中添加-systemjpeg gif,使Qt/Embedded 平台能支持jpeggif格式的图形。


命令make sub-src指定按精简方式编译开发包,也就是说有些Qt 类未被编译。Qt嵌入式开发包有5种编译范围的选项,使用这些选项,可控制Qt生成的库文件的大小,但是您的应用所使用到的一些Qt类将可能因此在Qt的库中找不到链接。编译选项的具体用法可运行./configure help命令查看。


3.       安装Qt/X11 2.3.2


在终端下运行以下命令:


tar xfz qt-x11-2.3.2.tar.gz


cd qt-2.3.2


export QTDIR=$PWD        


export PATH=$QTDIR/bin:$PATH


export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH


./configure -no-opengl


Make


make -C tools/qvfb


mv tools/qvfb/qvfb bin


cp bin/uic $QTEDIR/bin


cd ..


 

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条