QT完全手册.docx

上传人:b****6 文档编号:4828763 上传时间:2022-12-10 格式:DOCX 页数:35 大小:35.36KB
下载 相关 举报
QT完全手册.docx_第1页
第1页 / 共35页
QT完全手册.docx_第2页
第2页 / 共35页
QT完全手册.docx_第3页
第3页 / 共35页
QT完全手册.docx_第4页
第4页 / 共35页
QT完全手册.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

QT完全手册.docx

《QT完全手册.docx》由会员分享,可在线阅读,更多相关《QT完全手册.docx(35页珍藏版)》请在冰豆网上搜索。

QT完全手册.docx

QT完全手册

QT完全手册

嵌入式工具Qt的安装与使用

摘要

  Qt是Trolltech公司的一个产品。

Trolltech是挪威的一家软件公司,主要开发两种产品:

一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。

Qt和Qtopia分别是其中具有代表性的两个。

(2004-05-0510:

52:

14)

--------------------------------------------------------------------------------

Bylanf,本文选自:

开放系统世界

  Qt是Trolltech公司的一个产品。

Trolltech是挪威的一家软件公司,主要开发两种产品:

一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。

Qt和Qtopia分别是其中具有代表性的两个。

Qt是一个多平台的C++图形用户界面应用程序框架,它能给用户提供精美的图形用户界面所需要的所有元素,而且它是基于一种面向对象的思想,所以用户对其对象的扩展是相当容易的,并且它还支持真正的组件编程。

Qt是Linux桌面环境KDE的基础。

笔者认为,可以说Qt与Windows下的Mfc的实质是一样的,所以Qt最大的优点在于其跨平台性,可以支持现有的多种操作系统平台,主要有:

◆MS/Windows95、Windows98、WindowsNT4.0、Windows2000、WindowsXP;

◆Unix/X11Linux、SunSolaris、HP-UX、CompaqTrue64Unix、IBMAIX、SGIIRIX和很多其它X11平台;

◆MacintoshiMacOSX;

◆Embedded—带FramBuffer的Linux平台。

下面简单介绍一下Qt/Embedded和Qtopia在Linux上的安装和使用,还有在开发过程中可能碰到的一些问题。

Qt和Qtopia的安装

如果需要安装一个带FramBuffer的Qtopia平台,需要有以下软件(所列举软件以笔者使用的为例):

◆Qtopia1.6.0;

◆Tmake1.11;

◆Qt/Embedded2.3.4(Qtopia

◆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

在Linux命令模式下运行以下命令:

tarxfzTMAKEDIR=$PWD/tmake-1.11

exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

exportPATH=$TMAKEDIR/bin:

$PATH

 

3.安装Qt/Embedded2.3.4

在Linux命令模式下运行以下命令:

 

tarxfzqt-2.3.4

exportQTDIR=$PWD

exportQTEDIR=$QTDIR

exportPATH=$QTDIR/bin:

$PATH

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

在Linux命令模式下运行以下命令:

 

tarxfzqt-2.3.2

exportQTDIR=$PWD

exportPATH=$QTDIR/bin:

$PATH

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

./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

在Linux命令模式下运行以下命令:

 

tarxfzqt-x11-commercial-3.1.x

exportQTDIR=$PWD

exportQT3DIR=$QTDIR

exportPATH=$QTDIR/bin:

$PATH

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

./configure-thread

make

cd..

 

6.安装Qtopia

在Linux命令模式下运行以下命令:

 

cdqtopia-source-1.6.x

exportQTDIR=$QTEDIR

exportQPEDIR=$PWD

exportPATH=$QPEDIR/bin:

$PATH

cdsrc

./configure

make

cd../..

 

7.安装Qtopia桌面

 

cdQTDIR=$QT3DIR

./configure-qtopiadesktop

make

mvqtopiadesktop/bin/qtopiadesktop../bin

cd..

 

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下):

 

cd

 

然后新建一个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.ui

 

此时就能看到生成了相应test.h和test.cpp,这是一个类。

当然这只是一些表面的东西,还需要在这些代码中添加相应的Signal和Slot,完成所需要的操作。

值得注意的是,相应版本生成的ui最好用相应版本的uic来生成代码。

如果用Qt

在一般的开发过程中,首先通过这个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\

globalvars.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文件)

◆Qt/Embedded2.3.7(Qt/Embedded安装包)

◆Qt2.3.2forX11;(Qt的X11版的安装包,它将产生x11开发环境所需要的两个工具)

1、安装tmake

在Linux命令模式下运行以下命令:

tarxfzTMAKEDIR=$PWD/tmake-1.11

exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

exportPATH=$TMAKEDIR/bin:

$PATH

2.安装Qt/Embedded2.3.7

在Linux命令模式下运行以下命令:

tarxfzqt-2.3.7

exportQTDIR=$PWD

exportQTEDIR=$QTDIR

exportPATH=$QTDIR/bin:

$PATH

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

./configure-qconfig-qvfb-depths4,8,16,32

makesub-src

cd..

上述命令./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-2.3.2

exportQTDIR=$PWD

exportPATH=$QTDIR/bin:

$PATH

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

./configure-no-opengl

make

make-Ctools/qvfb

mvtools/qvfb/qvfbbin

cpbin/uic$QTEDIR/bin

cd..

根据开发者本身的开发环境,也可以在configure的参数中添加别的参数,比如

-no-opengl或-no-xfs,可以键入./configure-help来获得一些帮助信息。

如果Qt/Embedded的应用是在UNIX平台下开发的话,那么它就可以在开发的机器

上以一个独立的控制台或者虚拟缓冲帧的方式来运行,对于后者来说,其实是有一个X11

的应用程序虚拟了一个缓冲帧。

通过指定显示设备的宽度,高度和颜色深度,虚拟出来

的缓冲帧将和物理的显示设备在每个像素上保持一致。

这样每次调试应用时开发人员就

不用总是刷新嵌入式设备的FLASH存储空间,从而加速了应用的编译、链接和运行周期。

运行Qt的虚拟缓冲帧工具的方法是:

在Linux的图形模式下运行命令:

qvfb(回车)

当Qt嵌入式的应用程序要把显示结果输出到虚拟缓冲帧时,我们在命令行运行这

个程序时,在程序名后加上-qws的选项。

例如:

$>hello-qwsLIB环境,具体方法如下:

[root@localhosttmake-1.8]#exportTMAKEDIR=$PWD

[root@localhosttmake-1.8]#exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

[root@localhosttmake-1.8]#exportPATH=$TMAKEDIR/bin:

$PATH

[root@localhostexportQTDIR=$PWD

[root@localhostQTEDIR=$QTDIR

[root@localhostPATH=$QTDIR/bin:

$PATH

[root@localhostLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

2.如果你是用DESIGNER工具设计的界面(后面有讲),则要将*.ui文件转换成*.h文件和*.cpp文件。

转换方法如下:

uic–otest.htest.ui

uic–otest.cpp–itest.htest.ui

3.编写一个*.pro文件(用来生成Makefile文件用),该文件格式比较固定。

如test.pro文件基本格式如下(以test.cpp,test.hmain.cpp为例子):

EMPLATE=app

CONFIG+=qtwarn_onrelease

HEADERS=test.h

SOURCES=test.cpp\

main.cpp

TARGET=–oMakefiletest.pro

5编译生成可执行文件

make

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的一些参考资料:

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

exportPATH=$QTDIR/bin:

$PATH

exportTMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-generic-g++

exportLD_LIBRARY_PATH=$QTDIR/lib:

$LD_LIBRARY_PATH

需要时运行sourceqtopia.sh即可应用以上环境变量。

另外也可以通过在.bashrc文件中设定别名来应用这些环境变量。

假设环境变量设置文件存放在home目录的bin下,则可在.bashrc中加入:

aliasqtopia='source~/bin/qtopia.sh'

2、创建自定义的配置文件

整个Qtopia系统在build过程中需要三个独立的配置系统:

1)Qt/Embedded配置文件

2)tmake-用于buildQtopia1.x和一些第三方软件

3)qmake-用于buildQtopia2及以上版本

在buildQtopia以前,先要完成以上三项的配置。

下面是创建一个“myarm”配置的例子:

cp-r$TMAKEDIR/lib/qws/linux-arm-g++$TMAKEDIR/lib/qws/linux-myarm-g++

cp-r$QTEDIR/configs/linux-arm-g++-shared$QTEDIR/configs/linux-myarm-g++-shared

cp-r$QPEDIR/mkspecs/qws/linux-arm-g++$QPEDIR/mkspecs/qws/linux-myarm-g++

Qt/Embedded

编辑$QTEDIR/configs/linux-myarm-g++-shared,修改其中的utilities和flags成适合系统的内容,如:

可能需要修改SYSCONF_CXX,SYSCONF_CC和SYSCONF_LINK,指定正确的编译器.可能需要增加编译选项-DMYARM,在代码中增加宏#ifdefMYARM(用以增加设备相关的代码)

tmake

编辑$TMAKEDIR/lib/qws/linux-myarm-g++/tmake.conf,修改用到的utilites和flags:

可能需要修改TMAKE_CC,TMAKE_CXX和TMAKE_LINK

可能需要增加-DMYARM选项

qmake

修改$QPEDIR/mkspecs/qws/linux-myarm-g++/qmake.conf:

QMAKE_CC,QMAKE_CXX和QMAKE_LINK

-DMYARM

注意:

qmake.conf的最后一行必须是:

exists($$(QPEDIR)/src/config.pri):

include($$(QPEDIR)/src/config.pri)

 

可用于目录名的字符

正则表达式字符

Qtopia2.0.0-build系统访问到的任何目录都不能包含正则表达式字符

任何能被QRegExp识别的特殊字符和字符序列都可能引起问题

'.'字符只匹配自身

不要将正则表达式字符用于目录名,包括(但不仅限于):

+.*\()[]^${}

注:

Qtopiabuild系统不支持目录名中包含空格。

必须保证:

build系统访问到的目录不包含空格

访问目录的各层上级目录也不包含空格

Qtopia的依赖和必要条件

简介

为了使Qtopia正确运行,kernel提供共享内存、mmap和socket支持

Linux支持framebuffer

Linux支持OSS声音或支持与OSS兼容的ALSA声音。

进一步的信息参考TheQtopiaA/V&AppearanceFAQ

还需要以下的库:

Video4Linux

zlib

libuuid(akaluuid)

libjpeg

xorg或X11

注:

Freetype不是必须的但建议支持

 

支持的编译器和交叉编译器

gcc-2.95.2

gcc3.2.4

gcc-3.3.0,gcc-3.3.3,gcc-3.3.4

gcc-3.4.1

 

声音

Qtopia需要/dev/dsp可写,并支持以下的ioctl操作:

 

SNDCTL_DSP_SETFRAGMENT-Qtopia将这个值设置为0x4000c.

SNDCTL_DSP_SETFM-Qtopia设置为AFMT_S16_LE

SNDCTL_DSP_STEREO-Qtopia设置为1/true.

SNDCTL_DSP_SPEED-Qtopia设置为44100.

SNDCTL_DSP_GETOSPACE

Qtopia还需要/dev/dsp可以以阻塞方式和非阻塞方式打开。

以上的设定是Qtopia需要的设定,但可以容许少许的偏差,但如果不设定成Qtopia需要的值则不能保证音频能平滑播放。

假如您的设备只支持22500的播放速率,则在调用SNDCT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1