QT完全手册Word文档格式.docx
《QT完全手册Word文档格式.docx》由会员分享,可在线阅读,更多相关《QT完全手册Word文档格式.docx(34页珍藏版)》请在冰点文库上搜索。
6.0;
◆Tmake1.11;
◆Qt/Embedded2.3。
4(Qtopia1.6。
0是基于该开发平台上开发的);
◆Qt/Embedded2。
3.2forX11;
◆Qt3。
1.2forX11。
在Trolltech公司的网站上可以下载该公司所提供的Qt/Embedded的免费版本.
Qtopia平台安装分为以下几个步骤:
1.解包Qtopia
在Linux命令模式下运行以下命令:
tarxfzqtopia—source-1.6。
0(解包)
cdqtopia-source—1.6.0
exportQPEDIR=$PWD(设置环境变量)
cd。
。
2。
安装Tmake
tarxfztmake—1。
11.tar。
gz
exportTMAKEDIR=$PWD/tmake-1.11
exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportPATH=$TMAKEDIR/bin:
$PATH
3。
安装Qt/Embedded2.3.4
在Linux命令模式下运行以下命令:
tarxfzqt—embedded-2.3.4—commercial。
tar。
cdqt-2。
4
exportQTDIR=$PWD
exportQTEDIR=$QTDIR
exportPATH=$QTDIR/bin:
exportLD_LIBRARY_PATH=$QTDIR/lib:
$LD_LIBRARY_PATH
cp$QPEDIR/src/qt/qconfig—qpe.hsrc/tools/
./configure-qconfigqpe-qvfb—depths4,8,16,32
makesub—src
cd..
也可以在configure的参数中添加-system-jpeg和gif,使Qtopia平台能支持jpeg、gif格式的图形。
4.安装Qt/X112.3.2
tarxfzqt—x11—2。
3.2-commercial。
cdqt-2.3.2
exportQTDIR=$PWD
exportLD_LIBRARY_PATH=$QTDIR/lib:
./configure-no-opengl
make
make—Ctools/qvfb
mvtools/qvfb/qvfbbin
cpbin/uic$QTEDIR/bin
cd。
.
根据开发者本身的开发环境,也可以在configure的参数中添加别的参数,比如—no-opengl或-no-xfs,可以键入。
/configure—help来获得一些帮助信息.
5。
安装Qt/X113.1。
2
tarxfzqt-x11-commercial—3.1。
x.tar。
cdqt-x11-commercial—3.1.x
exportQT3DIR=$QTDIR
$PATH
$LD_LIBRARY_PATH
./configure—thread
cd.。
6.安装Qtopia
cdqtopia—source—1.6.x
exportQTDIR=$QTEDIR
exportQPEDIR=$PWD
exportPATH=$QPEDIR/bin:
cdsrc
/configure
/。
7.安装Qtopia桌面
cdqtopia-source—1。
6.x/src
exportQTDIR=$QT3DIR
./configure—qtopiadesktop
mvqtopiadesktop/bin/qtopiadesktop。
./bin
Qt和QtDesigner的使用
根据上面的步骤安装完成了Qt/Embedded和Qtopia之后,就可以运行这些程序了.
运行Qt的虚拟仿真窗口:
在Linux的图形模式下运行命令qvfb&
;
Qtopia只是一个用Qt/Embedded开发的程序,运行Qtopia,在图形模式下运行命令:
exportQTDIR=$QTEDIR,
qpe&;
这样Qtopia的程序就运行在QVFB上,即Qt的虚拟仿真窗口。
Qt/Embedded是针对嵌入式Linux而开发的一种开发工具,Qt封装了一些常用的类,而且这些类的名字都以Q字开头命名,如QString、QDialog等。
这里主要介绍一下如何利用QtDesigner来设计组件,并生成相应的代码。
在Qt中,把组件分为复合体、原始体和配件。
而在Qt中,组件是由一些抽象类、复杂的组件类、管理组件几何特性的类等组成.
Qt中有三个主要的基类:
QObject、Qapplication和QWidget。
在Qt中编程,利用Signal和Slot进行对象之间的通信是Qt的主要特征。
它与Windows中的消息机制非常类似,但是Signal和Slot机制真正实现了一种消息的封装。
当对象的状态改变时,发出Signal,通知所有的Slot接受Signal,尽管它不知道哪些函数是Slot,Slot一开始也不知道哪些Signal可以接收。
Signal和Slot之间不是一一对应的关系,一个Signal可以发给多个Slot,Slot也可以接收多个Signal.Slot除了可以接收Signal以外,与其它的成员函数没有区别。
这种机制比使用回调函数要灵活,但是会减慢程序的运行速度.不过在现在高速CPU的面前,这种损失是无足轻重的,而且它还能保证程序的简明性和灵活性,非常便利。
在Qt的组件中,不仅定义了常用的成员变量和成员函数,还定义了所有与该组件相关的Signal和Slot。
要将组件组合起来,最简单的方法就是使用QtDesigner.首先要启动QtDesigner,在Linux命令模式下,键入以下命令(假设Qt安装在/usr/local下):
cdqt—2。
2/bin
./designer
这样就可以启动一个与Windows下的Delphi相类似的如图1的界面.
然后新建一个QFrame,将自己需要的组件直接拖拉到这个Frame中,相信很多人都有过这样的经历,此处就不再详细描述了。
完成之后存盘时,会将这个新的组件保存为一个扩展名为.ui的文件.假设所存的文件名为test。
ui,用vitest。
ui来查看这个文件,发现这是一个用xml语言写的一个文本.下面用这个test。
ui生成相应的test。
h和test。
cpp.同样还是在这个目录下,可以看到一个uic的工具,这个是Qt专门用来将ui文件生成.h和。
cpp文件的,在终端模式下键入以下命令:
/uic—otest.htest。
ui
./uic-otest.h-itest.cpptest。
此时就能看到生成了相应test。
cpp,这是一个类。
当然这只是一些表面的东西,还需要在这些代码中添加相应的Signal和Slot,完成所需要的操作.值得注意的是,相应版本生成的ui最好用相应版本的uic来生成代码。
如果用Qt3.1。
2的Designer生成的ui,用Qt2。
3.2的uic来生成代码,生成的代码都会是一些空函数.
在一般的开发过程中,首先通过这个ui生成的一个类,在Qt中通常叫做Base,如上面的例子,叫做testBase;
然后再新建一个类,来继承这个Base.通常叫做实现类Impl,如testImpl。
在这个实现类里面定义所需要的成员函数、Signal和Slot,因为ui可能是经常需要改动的.如果这样做,每次只需要在Designer中修改ui,而不用去理会这些成员函数、Signal和Slot了.
编译一个Qt程序必然需要Makefile,在Qt中提供了一个专门生成Makefile的工具,就是tmake.用tmake需要根据编写的程序写一个.pro文件。
.pro文件非常简单,有固定的格式,下面是一个例子:
TEMPLATE=app
CONFIG=qtopiawarn_onrelease
MOC_DIR=tmp
OBJECTS_DIR=tmp
HEADERS=fcrs。
h\
structs.h\
globalfunc.h\
globalvars。
h\
testimpl.h
SOURCES=main。
cpp\
globalfunc。
cpp\
cpp\
testimpl。
cpp
INTERFACES=test.ui\
TARGET=fcrs
生成这个。
pro文件之后,在终端中键入下面的命令:
tmake—oMakefiletest。
pro
就自动生成了一个Makefile,使用这个Makefile编译所编写的程序就可以了。
Qt/Embedded开发环境建立的过程
—-—--—--——-——---——----——-------———-—--————----—————-—--—-—--————-——-—-—-—-—-—-—-
Qt/Embedded开发环境建立的过程:
(这些软件可以免费从trolltech的WEB或FTP服务器上下载)
◆tmake1.11或更高版本;
(生成Qt/Embedded应用工程的Makefile文件)
7(Qt/Embedded安装包)
◆Qt2。
2forX11;
(Qt的X11版的安装包,它将产生x11开发环境所需要的两个工具)
1、安装tmake
在Linux命令模式下运行以下命令:
tarxfztmake-1。
exportTMAKEDIR=$PWD/tmake-1。
11
exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportPATH=$TMAKEDIR/bin:
安装Qt/Embedded2。
3.7
tarxfzqt—embedded-2。
7.tar.gz
cdqt-2.3.7
exportPATH=$QTDIR/bin:
exportLD_LIBRARY_PATH=$QTDIR/lib:
/configure—qconfig-qvfb—depths4,8,16,32
上述命令./configure-qconfig—qvfb-depths4,8,16,32指定Qt嵌入式开发包生
成虚拟缓冲帧工具qvfb,并支持4,8,16,32位的显示颜色深度.另外我们也可以在
configure的参数中添加-system-jpeg和gif,使Qt/Embedded平台能支持jpeg、gif
格式的图形。
上述命令makesub—src指定按精简方式编译开发包,也就是说有些Qt类未被编
译。
Qt嵌入式开发包有5种编译范围的选项,使用这些选项,可控制Qt生成的库文件的大
小,但是您的应用所使用到的一些Qt类将可能因此在Qt的库中找不到链接.编译选项的具
体用法可运行。
/configure-help命令查看。
3.安装Qt/X112.3.2
在Linux命令模式下运行以下命令:
tarxfzqt-x11—2.3.2.tar。
./configure-no—opengl
根据开发者本身的开发环境,也可以在configure的参数中添加别的参数,比如
—no-opengl或—no—xfs,可以键入./configure-help来获得一些帮助信息。
如果Qt/Embedded的应用是在UNIX平台下开发的话,那么它就可以在开发的机器
上以一个独立的控制台或者虚拟缓冲帧的方式来运行,对于后者来说,其实是有一个X11
的应用程序虚拟了一个缓冲帧.通过指定显示设备的宽度,高度和颜色深度,虚拟出来
的缓冲帧将和物理的显示设备在每个像素上保持一致.这样每次调试应用时开发人员就
不用总是刷新嵌入式设备的FLASH存储空间,从而加速了应用的编译、链接和运行周期.
运行Qt的虚拟缓冲帧工具的方法是:
在Linux的图形模式下运行命令:
qvfb(回车)
当Qt嵌入式的应用程序要把显示结果输出到虚拟缓冲帧时,我们在命令行运行这
个程序时,在程序名后加上-qws的选项。
例如:
$〉hello-qws
一,QT/E的安装.
在本机中安装了包括QT4。
0。
1(WINDOWS版本)以及QT/E2。
7(LINUX版本)。
QT/E我安装在我的虚拟机中。
因为QT/E2.3.7的版本问题,其适宜在REDHAT9.0版本(或更低版本)下安装,否则安装不成功。
QT/E安装过程复杂,具体细节可以参考下面这篇文章。
《Qt/Embedded开发环境建立的过程》
此文在网上可搜索到.
本机下虚拟机中QT/E安装路径为:
/home/wangxl/QTE/qt—2.3。
7
QT/X11安装路径为:
/home/wangxl/QTE/qt-2.3.2
Tmake安装路径为:
/home/wangxl/QTE/Tmake—1.8
QT/E下载地址为:
ftp:
//ftp。
rediris.es/mirror/Qt/source/
Tmake下载地址为:
trolltech。
com/freebies/tmake/
二.QT与QT/E以及QT3与QT4之间的区别
相对来说QT与QT/E的语法一样,所不同之处在库类大小或者库类函数大小不同而已。
QT/E相对于QT来说,不具有少数类或者少数函数的支持.具体QT/E是否包含某个类或者包含某个类中的函数,我的方法是在QT/E安装目录下的include文件夹中去查找.
QT3和QT4有很多不同点,主要不同也是在于库类以及支持函数有所变化,比如,有些QT3中的函数,在QT4中被其他函数名所代替,因此很多QT4程序在QT3环境下无法执行。
QT/E2。
3.7与QT3基本相同,除了我前面提到的QT与QT/E的差别.
三.QT/E编译与执行。
1.在QT/E编译与执行前要先设置TMAKE与QT/ELIB环境,具体方法如下:
[root@localhosttmake-1。
8]#exportTMAKEDIR=$PWD
[root@localhosttmake-1.8]#exportTMAKEPATH=$TMAKEDIR/lib/qws/linux—x86—g++
[root@localhosttmake-1。
8]#exportPATH=$TMAKEDIR/bin:
[root@localhostqt-2。
3.7]#exportQTDIR=$PWD
[root@localhostqt—2.3.7]#exportQTEDIR=$QTDIR
[root@localhostqt-2.3。
7]#exportPATH=$QTDIR/bin:
7]#exportLD_LIBRARY_PATH=$QTDIR/lib:
2.如果你是用DESIGNER工具设计的界面(后面有讲),则要将*.ui文件转换成*。
h文件和*.cpp文件。
转换方法如下:
uic–otest.htest.ui
uic–otest.cpp–itest。
htest。
3.编写一个*。
pro文件(用来生成Makefile文件用),该文件格式比较固定。
如test。
pro文件基本格式如下(以test.cpp,test.hmain.cpp为例子):
EMPLATE=app
CONFIG+=qtwarn_onrelease
HEADERS=test.h
SOURCES=test.cpp\
main.cpp
TARGET=hello
DEPENDPATH=/home/wangxl/QTE/qt—2。
7/include
REQUIRES=
4.生成Makefile文件
方法为:
tmake–oMakefiletest。
5编译生成可执行文件
6打开QVFB
进入安装QT/X11所在目录,在BIN目录下执行程序qvfb.
有时候需要修改qvfb执行时的deptb参数才能够执行QT/E程序.可以直接在QVFB打开窗口的Configure彩单项中选择,也可以用如下命令执行QVFB。
/qvfb–width**-height**-depth**
7.执行QT/E程序
如./TEST
在QVFB程序打开的窗口中将出现TEST程序的显示.
四.Qt/e与QT/X11
安装QT/E的同时还需要安装QT/X11与Tmake,Tmake是用来帮助生成Makefile文件的.安装QT/X11主要是向QT/E提供designer工具和qvfb工具的.
Designer可以用来设计图形界面,最后生成.ui文件,可通过UIC命令转换为相应的C++文件。
QVFB模拟帧缓冲,提供QT/E程序的显示平台.
五.QT/E程序ARM板上执行
在我虚拟机上可以执行的QT/E程序不能在ARM板上执行,需要对QT/E进行重新编译,并需要设置响对于ARM板系统的编译环境,具体方法可以参考我另外的一文《QT/E开发记录》
六.QT/E支持中文显示问题
QT/E需要字体转换才能显示中文。
具体方法可以参考我另外的一文《QT/E开发记录》
但是由于缺少UNICODE的QPF文件的字体,中文字大小不均匀问题尚没解决。
七QT/E的一些参考资料:
//www。
qtcn.org/bbs/index。
phpQT中文论坛
//www.qiliang。
net/qt/(关于QT3的类,以及类函数可以在这寻找)
提供QT3编程最好书籍的电子版本《C++GUIProgrammingwithQT3》(本机)
关于QT4可以参考QTASSISTNAT(本机中),另外QTASSISTNAT中也可以查找QT3的类及库等。
设置Qtopia的build环境
1、环境变量
在目标系统上buildQtopia必须设定必要的环境变量,如QTDIR,如果依赖多个版本的Qt,则需要用环境变量指向用到的库配置。
一种方法是将环境变量的设定写入文件,通过运行source命令应用文件的内容。
举例说明:
Linux/bash下建立环境变量设定文件qtopia.sh,内容如下:
exportQPEDIR=/opt/Qtopia
exportQTDIR=/opt/Qtopia
exportTMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux—generic—g++
$LD_LIBRARY