首页 QT完全手册

QT完全手册

举报
开通vip

QT完全手册QT完全手册 QT完全手册 嵌入式工具Qt的安装与使用 摘要   Qt是Trolltech公司的一个产品。Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。Qt和 Qtopia分别是其中具有代表性的两个。(2004-05-05 10:52:14) ------------------------------------------------------------------------...

QT完全手册
QT完全 手册 华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载 QT完全手册 嵌入式工具Qt的安装与使用 摘要   Qt是Trolltech公司的一个产品。Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。Qt和 Qtopia分别是其中具有代表性的两个。(2004-05-05 10:52:14) -------------------------------------------------------------------------------- By lanf, 出处:http://tech.ccidnet.com/pub/article/c310_a71173_p1.html 作者:胡利民 本文选自:开放系统世界   Qt是Trolltech公司的一个产品。Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上。Qt和Qtopia分别是其中具有代表性的两个。 Qt是一个多平台的C++图形用户界面应用程序框架,它能给用户提供精美的图形用户界面所需要的所有元素,而且它是基于一种面向对象的思想,所以用户对其对象的扩展是相当容易的,并且它还支持真正的组件编程。 Qt是Linux桌面环境KDE的基础。笔者认为,可以说Qt与Windows下的Mfc的实质是一样的,所以Qt最大的优点在于其跨平台性,可以支持现有的多种操作系统平台,主要有: ◆ MS/Windows 95、Windows 98、WindowsNT 4.0、Windows 2000、Windows XP; ◆ Unix/X11 Linux、Sun Solaris、HP-UX、Compaq True64Unix、IBM AIX、SGI IRIX和很多其它X11平台; ◆ Macintoshi Mac OSX; ◆ Embedded—带FramBuffer的Linux平台。 下面简单介绍一下Qt/Embedded和Qtopia在Linux上的安装和使用,还有在开发过程中可能碰到的一些问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。 Qt 和Qtopia的安装 如果需要安装一个带FramBuffer的Qtopia平台,需要有以下软件(所列举软件以笔者使用的为例): ◆ Qtopia 1.6.0; ◆ Tmake 1.11; ◆ Qt/Embedded 2.3.4(Qtopia 1.6.0是基于该开发平台上开发的); ◆ Qt/Embedded 2.3.2 for X11; ◆ Qt 3.1.2 for X11。 在Trolltech公司的网站上可以下载该公司所提供的Qt/Embedded的免费版本。 Qtopia平台安装分为以下几个步骤: 1. 解包Qtopia 在Linux命令模式下运行以下命令: tar xfz qtopia-source-1.6.0 (解包) cd qtopia-source-1.6.0 export QPEDIR=$PWD (设置环境变量) cd.. 2. 安装Tmake 在Linux命令模式下运行以下命令: 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 3. 安装Qt/Embedded2.3.4 在Linux命令模式下运行以下命令: tar xfz qt-embedded-2.3.4-commercial.tar.gz cd qt-2.3.4 export QTDIR=$PWD export QTEDIR=$QTDIR export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ . /configure -qconfig qpe -qvfb -depths 4,8,16,32 make sub-src cd .. 也可以在configure的参数中添加-system-jpeg和gif,使Qtopia平台能支持jpeg、gif格式的图形。 4. 安装Qt/X11 2.3.2 在Linux命令模式下运行以下命令: tar xfz qt-x11-2.3.2-commercial.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 .. 根据开发者本身的开发环境,也可以在configure的参数中添加别的参数,比如-no-opengl或-no-xfs,可以键入./configure -help来获得一些帮助信息。 5. 安装Qt/X11 3.1.2 在Linux命令模式下运行以下命令: tar xfz qt-x11-commercial-3.1.x.tar.gz cd qt-x11-commercial-3.1.x export QTDIR=$PWD export QT3DIR=$QTDIR export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH ./configure -thread make cd .. 6. 安装Qtopia 在Linux命令模式下运行以下命令: cd qtopia-source-1.6.x export QTDIR=$QTEDIR export QPEDIR=$PWD export PATH=$QPEDIR/bin:$PATH cd src ./configure make cd ../.. 7. 安装Qtopia桌面 cd qtopia-source-1.6.x/src export QTDIR=$QT3DIR ./configure -qtopiadesktop make mv qtopiadesktop/bin/qtopiadesktop ../bin cd .. Qt和Qt Designer的使用 根据上面的步骤安装完成了Qt/Embedded和Qtopia之后,就可以运行这些程序了。 运行Qt的虚拟仿真窗口:在Linux的图形模式下运行命令qvfb&;Qtopia只是一个用Qt/Embedded开发的程序,运行Qtopia,在图形模式下运行命令: export QTDIR=$QTEDIR, qpe &; 这样Qtopia的程序就运行在QVFB上,即Qt的虚拟仿真窗口。 Qt/Embedded是针对嵌入式Linux而开发的一种开发工具,Qt封装了一些常用的类,而且这些类的名字都以Q字开头命名,如QString、QDialog等。这里主要介绍一下如何利用Qt Designer来设计组件,并生成相应的代码。 在Qt中,把组件分为复合体、原始体和配件。而在Qt中,组件是由一些抽象类、复杂的组件类、管理组件几何特性的类等组成。 Qt中有三个主要的基类:QObject、Qapplication和QWidget。 在Qt 中编程,利用Signal和Slot进行对象之间的通信是Qt的主要特征。它与Windows中的消息机制非常类似,但是Signal和Slot机制真正实现了一种消息的封装。当对象的状态改变时,发出Signal, 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 所有的Slot接受Signal,尽管它不知道哪些 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 是Slot,Slot一开始也不知道哪些Signal可以接收。Signal和Slot之间不是一一对应的关系,一个Signal可以发给多个Slot, Slot也可以接收多个Signal。Slot除了可以接收Signal以外,与其它的成员函数没有区别。这种机制比使用回调函数要灵活,但是会减慢程序的运行速度。不过在现在高速CPU的面前,这种损失是无足轻重的,而且它还能保证程序的简明性和灵活性,非常便利。 在Qt的组件中,不仅定义了常用的成员变量和成员函数,还定义了所有与该组件相关的Signal和Slot。 要将组件组合起来,最简单的方法就是使用Qt Designer。首先要启动Qt Designer,在Linux命令模式下,键入以下命令(假设Qt安装在/usr/local下): cd qt-2.3.2/bin ./designer 这样就可以启动一个与Windows下的Delphi相类似的如图1的界面。 然后新建一个QFrame,将自己需要的组件直接拖拉到这个Frame中,相信很多人都有过这样的经历,此处就不再详细描述了。完成之后存盘时,会将这个新的组件保存为一个扩展名为.ui的文件。假设所存的文件名为test.ui,用vi test.ui来查看这个文件,发现这是一个用xml语言写的一个文本。下面用这个test.ui生成相应的test.h和test.cpp。同样还是在这个目录下,可以看到一个uic的工具,这个是Qt专门用来将ui文件生成.h和.cpp文件的,在终端模式下键入以下命令: ./uic -o test.h test.ui ./uic -o test.h -i test.cpp test.ui 此时就能看到生成了相应test.h和test.cpp,这是一个类。当然这只是一些表面的东西,还需要在这些代码中添加相应的Signal和Slot,完成所需要的操作。值得注意的是,相应版本生成的ui最好用相应版本的uic来生成代码。如果用Qt 3.1.2的Designer生成的ui,用Qt 2.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 = qtopia warn_on release 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 -o Makefile test.pro 就自动生成了一个Makefile,使用这个Makefile编译所编写的程序就可以了。 Qt/Embedded开发环境建立的过程 -------------------------------------------------------------------------------- Qt/Embedded开发环境建立的过程: (这些软件可以免费从trolltech的WEB或FTP服务器上下载) ◆ tmake 1.11 或更高版本; (生成Qt/Embedded应用工程的Makefile文件) ◆ Qt/Embedded 2.3.7 (Qt/Embedded 安装包) ◆ Qt 2.3.2 for X11; (Qt的X11版的安装包, 它将产生x11开发环境所需要的两个工具) 1、安装tmake 在Linux 命令模式下运行以下命令: 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 在Linux 命令模式下运行以下命令: 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,并支持4,8,16,32 位的显示颜色深度。另外我们也可以在 configure 的参数中添加-system-jpeg 和gif,使Qt/Embedded 平台能支持jpeg、gif 格式的图形。 上述命令 make sub-src 指定按精简方式编译开发包,也就是说有些Qt 类未被编 译。Qt 嵌入式开发包有5 种编译范围的选项,使用这些选项,可控制Qt 生成的库文件的大 小,但是您的应用所使用到的一些Qt 类将可能因此在Qt 的库中找不到链接。编译选项的具 体用法可运行./configure -help 命令查看。 3. 安装Qt/X11 2.3.2 在Linux 命令模式下运行以下命令: 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 .. 根据开发者本身的开发环境,也可以在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。3。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下载地址为:ftp://ftp.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/E LIB环境,具体方法如下: [root@localhost tmake-1.8]# export TMAKEDIR=$PWD [root@localhost tmake-1.8]# export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++ [root@localhost tmake-1.8]# export PATH=$TMAKEDIR/bin:$PATH [root@localhost qt-2.3.7]# export QTDIR=$PWD [root@localhost qt-2.3.7]#export QTEDIR=$QTDIR [root@localhost qt-2.3.7]#export PATH=$QTDIR/bin:$PATH [root@localhost qt-2.3.7]#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 2.如果你是用DESIGNER工具设计的界面(后面有讲),则要将*.ui文件转换成*.h文件和*.cpp文件。转换方法如下: uic –o test.h test.ui uic –o test.cpp –i test.h test.ui 3.编写一个*.pro文件(用来生成Makefile文件用),该文件格式比较固定。 如test.pro文件基本格式如下(以test.cpp ,test.h main.cpp为例子): EMPLATE = app CONFIG += qt warn_on release HEADERS = test.h SOURCES = test.cpp \ main.cpp TARGET = hello DEPENDPATH=/home/wangxl/QTE/qt-2.3.7/include REQUIRES= 4.生成Makefile文件 方法为:tmake –o Makefile test.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的一些参考资料: http://www.qtcn.org/bbs/index.php QT中文论坛 http://www.qiliang.net/qt/ (关于QT3的类,以及类函数可以在这寻找) 提供QT3编程最好书籍的电子版本《C++ GUI Programming with QT 3》(本机) 关于QT4可以参考QT ASSISTNAT(本机中),另外QT ASSISTNAT中也可以查找QT3的类及库等。 设置Qtopia的build环境 1、环境变量 在目标系统上build Qtopia必须设定必要的环境变量,如QTDIR, 如果依赖多个版本的Qt,则需要用环境变量指向用到的库配置。 一种方法是将环境变量的设定写入文件,通过运行source命令应用文件的内容。 举例说明: Linux/bash下建立环境变量设定文件qtopia.sh, 内容如下: export QPEDIR=/opt/Qtopia export QTDIR=/opt/Qtopia export PATH=$QTDIR/bin:$PATH export TMAKEPATH=/opt/Qtopia/tmake/lib/qws/linux-generic-g++ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 需要时运行 source qtopia.sh即可应用以上环境变量。 另外也可以通过在.bashrc文件中设定别名来应用这些环境变量。 假设环境变量设置文件存放在home目录的bin下, 则可在.bashrc中加入: alias qtopia='source ~/bin/qtopia.sh' 2、创建自定义的配置文件 整个Qtopia系统在build过程中需要三个独立的配置系统: 1) Qt/Embedded 配置文件 2) tmake - 用于build Qtopia 1.x和一些第三方软件 3) qmake - 用于build Qtopia 2及以上版本 在build Qtopia以前,先要完成以上三项的配置。 下面是创建一个“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,在代码中增加宏#ifdef MYARM(用以增加设备相关的代码) 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) 可用于目录名的字符 正则表达式字符 Qtopia 1.9.x和Qtopia 2.0.0 - 2.1.0对字符有以下的要求: Qtopia build系统访问到的任何目录都不能包含正则表达式字符 任何能被QRegExp识别的特殊字符和字符序列都可能引起问题 '.'字符只匹配自身 不要将正则表达式字符用于目录名,包括(但不仅限于): + . ? * \ () [] ^ $ {} 注:Qtopia 2.1.0和2.1.1及以上版本可以通过应用patch解除以上的限制 空格 Qtopia build系统不支持目录名中包含空格。 必须保证: build系统访问到的目录不包含空格 访问目录的各层上级目录也不包含空格 Qtopia的依赖和必要条件 简介 为了使Qtopia正确运行, 必须满足以下的必要条件: 安装适当的编译/交叉编译工具 Qt/Embedded-2.3.11 Linux kernel提供共享内存、mmap和socket支持 Linux支持frame buffer Linux支持OSS声音或支持与OSS兼容的ALSA声音。 进一步的信息参考 The Qtopia A/V & Appearance FAQ 还需要以下的库: Video4Linux zlib libuuid(aka luuid) libjpeg xorg 或X11 注:Freetype不是必须的但建议支持 http://freetype.sourceforge.net/index2.html 支持的编译器和交叉编译器 gcc-2.95.2 gcc 3.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的播放速率,则在调用SNDCTL_DSP_SPEED时要报告此速率,以免造成音频质量的缺损。 不过,如果系统不支持GETOSPACE,非阻塞写入或 SNDCTL_DSP_SET_FRAGMENT, 几乎可以肯定必然会损失音频质量。 Video4Linux Camera应用程序需要支持Video4Linux v1的内核, Qtopia没有提供该支持。 请参考官方的 Video for Linux 资源站点,参看API的详细内容。 zlib zlib可以从 http://www.gzip.org/zlib/ 下载 libuuid(aka luuid) Qtopia不提供uuid支持。 这个库可以从 http://e2fsprogs.sourceforge.net/ 站点下载 另外, 如果你有SuSE Linux的发行版, e2fsprogs-devel这个包可以提供uuid支持; 在Debian中对应的包是uuid-dev. 这个库应该放在 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 路经下/usr/lib/libuuid.so 请用包管理工具来查看该包是否已经安装: rpm -qa | grep e2fsprogs 如果尚未安装,请从安装盘或镜像站安装这个包。 需要注意的是,如果没有安装e2fsprogs-devel,在链接时会发生下面的错误: /usr/lib/gcc-lib/i586-suse-Linux/3.3.3/../../../../i586-suse-linux/bin/ld: cannot find -luuid 如果安装了该库仍遇到上述错误,则检查Qtopia的configure脚本的-L和-R参数, 以确定脚本包含了库的实际路径。 关于交叉编译的信息可参考 System Integrator's Guide. libjpeg Qtopia不提供jpeg库。 Qtopia需要Qt/Embedded配置为支持jpeg。 libjpeg库可从 http://www.ijg.org/ 下载 此外,如果你有SuSE发行版, libjpeg这个包可提供该库。 这个库应该安装在标准路经/usr/lib/libjpeg.so 检查libjpeg包是否已经安装: rpm -qa | grep libjpeg 如果未安装,请从安装盘或镜像站安装。 关于libjpeg交叉编译的信息, 可参考System Integrator's Guide. xorg或X11 开发包括有从以下站点下载: http://www.xfree86.org/ http://xorg.freedesktop.org 相关讨论 决定开始Qtopia需要的步骤, 参考: Getting started 将Qtopia集成到特定设备上的重点步骤, 参考: System Integrator's guide Qtopia的FAQs,参看: Qtopia index page 系统是完全安装RedHat9.0(里面带QT3.1),板子是X-Hyper250B的,Toolchain用的是开发板带的hybus-arm-linux-R1.1 交叉编译所用到的文件: qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qtopia-free-source-2.1.1.tar.gz tmake-1.13.tar.gz e2fsprogs-1.35.tar.gz 主机x86的编译步骤: tar xfz qt-embedded-2.3.10-free.tar.gz(解压后qt-2.3.10改名为qt-2.3.10-host) export QTEDIR=$PWD/qt-2.3.10-host tar xfz qt-x11-2.3.2.tar.gz(解压后qt-2.3.2) export QT2DIR=$PWD/qt-2.3.2 tar xfz qtopia-free-source-2.1.1.tar.gz(解压后qtopia-free-2.1.1改名为qtopia-2.1.1-host) export QPEDIR=$PWD/qtopia-2.1.1-host tar xfz tmake-1.13.tar.gz(解压后tmake-1.13) export TMAKEDIR=$PWD/tmake-1.13 export TMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-x86-g++ export PATH=$TMAKEDIR/bin:$PATH cd qt-2.3.2 export QTDIR=$QT2DIR export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH ./configure -no-xft make make -C tools/qvfb cd .. cd qt-2.3.10-host export QTDIR=$PWD export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH mkdir bin (因为解压后的qt-2.3.10没有bin文件夹) cp $QT2DIR/bin/uic bin cp $QT2DIR/tools/qvfb/qvfb bin cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ ./configure -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32 make cd .. tar xzf e2fsprogs-1.35.tar.gz cd e2fsprogs-1.35 ./configure -enable-elf-shlibs make install lib/uuid/ 注:这是编译x86的libuuid库 cd .. cd qtopia-2.1.1-host export PATH=$QPEDIR/bin:$PATH export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH ./configure make 编译例子: $qmake -project ==>>我都是这样创建.pro文件的 $tmake -o Makefile hello.pro $make $qvfb & $./hello -qws 或者$qpe 还没怎么仔细研究过。 目标机arm-linux的编译步骤: tar xfz qt-embedded-2.3.10-free.tar.gz(解压后qt-2.3.10改名为qt-2.3.10-target) export QTEDIR=$PWD/qt-2.3.10-target tar xfz qt-x11-2.3.2.tar.gz export QT2DIR=$PWD/qt-2.3.2 tar xfz qtopia-free-source-2.1.1.tar.gz(解压后qtopia-free-2.1.1改名为qtopia-2.1.1-target) export QPEDIR=$PWD/qtopia-2.1.1-target tar xfz tmake-1.13.tar.gz export TMAKEDIR=$PWD/tmake-1.13 export TMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-arm-g++ export PATH=$TMAKEDIR/bin:$PATH cd qt-2.3.2 export QTDIR=$QT2DIR export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH ./configure -no-xft make make -C tools/qvfb cd .. cd qt-2.3.10-target export QTDIR=$PWD export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH mkdir bin cp $QT2DIR/bin/uic bin cp $QT2DIR/tools/qvfb/qvfb bin cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/ ./configure -xplatform linux-arm-g++ -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32 make cd .. 注:这里需要arm版本的libjpeg.so.62,hybus-arm-linux-R1.1里面包含这个库;如没有可以上网下载。 tar xzf e2fsprogs-1.35.tar.gz cd e2fsprogs-1.35 ./configure -host=arm-linux -with-cc=arm-linux-gcc -with-linker=arm-linux-ld -enable-elf-shlibs -prefix=/usr/local/hybus-arm-linux-R1.1/arm-linux make install lib/uuid/ ===>>>这步安装到hybus-arm-linux-R1.1/lib上的libuuid.so.1.2版本不对, 要cp lib/libuuid.so.1.2 ../hybus-arm-linux-R1.1/lib 注:这步是交叉编译arm的libuuid库,配置详情见./configure --help (还要多谢 http://panjet.wleda.com/?p=20 这里面的大哥呀,好不容易才在网上找到的) cd .. cd qtopia-2.1.1-host export PATH=$QPEDIR/bin:$PATH export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH cp src/libraries/qtopia/custom-linux-ipaq-g++.cpp src/libraries/qtopia/custom-linux-arm-g++.cpp cp src/libraries/qtopia/custom-linux-ipaq-g++.h src/libraries/qtopia/custom-linux-arm-g++.h ./configure -xplatform linux-arm-g++ make 注:这里需要libstdc++.so和libgcc_s.so库 develop环境下qt中文化程序设计 原文出处:Linux公社 原文作者:yfy001 kdevelop是一款在linux平台下可以同windows环境下的vc相媲美的集成开发环境,qt则是一款支持包括windows和linux平台 的GUI库,可以说它是linux下的MFC.在显示上,qt使用Unicode作为内部编码,可以支持多种编码.如何使用qt进行国际化编程 在网上可以找到很多资料的,但都是针对较早版本的qt进行介绍的.qt3.0.5中对这些作了些改动,这些方法就相应的要做些改动. 而且在kdevelop中开发qt应用程序,将会事半功倍.我的开发环境为redhat8.0(需安装kde开发工具包). 首先在linux中打开kdevelop集成开发环境,用它的应用程序向导新建一个qt的SDI的应用程序框架.这个同windows下vc很类似.它 将会为你自动生成版本号,作者,e-mail等信息的单文档对话框的应用程序框架.我们首先对它自动生成的程序进行汉化(qt1是 我的项目名称). 1.汉化自动生成的程序 添加翻译文件 在"项目"菜单中选择"添加新的翻译文件",语言选择"zh_CN.Gb2312".将会创建一个zh_CN.GB2312字符编码的翻译文件.扩展名 为".ts".在qt3.0.5环境下,打开"*.ts"翻译文件的工具是linguist.你可以在"工具"菜单中选择"QT linguist"来打开,在linguist菜单中选择"file"->"open"打开所要翻译的翻译文件.此时可以在linguist窗口中的source text中 的文本就是你所要翻译的文本,选择所要翻译的文本,在下方有一个类似一页纸一样的地方,在translate下输入翻译后的文本. 所示. 翻译完这些文件后,编译运行,在我们的程序里并不能显示中文,还是英文,我们还需要做的就是用lrelease命令将翻译后的文件转换 成".qm"文件才可以使用.在控制台下进入你用kdevelop所生成的应用程序目录. >lrelease Makefile.am qt3.0.5用这个两个程序取代了以前版本的findtr和msg2qm命令.在kdevelop集成环境中打开main.cpp主函数, ...... QApplication a(argc, argv); a.setFont(QFont("helvetica", 10)); QTranslator tor( 0 ); tor.load( QString("qt1.") + QTextCodec::locale(), "." ); // tor.load( QString("qt1.zh_CN.GB2312"), "." ); a.installTranslator( &tor ); /* uncomment the following line, if you want a Windows 95 look*/ // a.setStyle(WindowsStyle); Qt1App *qt1=new Qt1App(); //Form1 *qt1=new Form1(); a.setMainWidget(qt1); ...... 此处: tor.load( QString("qt1.") + QTextCodec::locale(), "." ); 是根据客户环境的locale来载入当前目录下相应的翻译文件的.redhat中文环境默认的locale为gb18030, 此处要么把翻译文件名由qt1.zh_CN.GB2312.qm改为qt1.zh_CN.GB18030.qm,要么将这句改为 tor.load( QString("qt1.zh_CN.GB2312"), "." ); 不过为了国际化编程的需要,建议采用第一种方法.更改后编译运行,你会发现你的程序已经是中文界面的了. 2.汉化自己的对话框 大多数情况下我们都需要自己来设计对话框,qt为我们提供了非常好的对话框编辑器QtDesigner,可以很方便的设计我们的对话框,qt 的信号和槽等,关于QtDesigner的使用,限于篇幅,不再赘述.以前面的程序为基础.在kdevelop中选择"文件"->"新建",选择Qt Designer文件(*.ui).在文件名一栏中填写"mydialog",最后点击确定按钮,即会启动QtDesigner,此处只拖了一个Label,写了一 些英文字符.对话框的name属性为Form1.将对话框mydialog.ui保存. 在控制台下进入你用kdevelop所生成的应用程序目录. >lupdate Makefile.am 同样用"QT linguist"来翻译qt1.zh_CN.GB2312.tr文件.此时linguist的context中会多出Form1的选项,这里面就是我们新建的对话框要翻译的 选项.依据前面的方法进行汉化. >lrelease Makefile.am 生成qt1.zh_CN.GB2312.qm文件. 编译将会生成mydialog.cpp mydialog.h mydialog.moc文件.然后将main.cpp中的 Qt1App *qt1=new Qt1App();改为 Form1 *qt1=new Form1(); 并将"mydialog.h" #include 进去.依据前面的方法更改tor.load中加载的翻译文件.编译运行,你的对话框也是中文的了. 3.其它的一些说明 由于qt返回的是Unicode编码,譬如你在LineEdit中直接输入中文,返回的就是??,qt中可以直接使用QTextCodec来转换字符串的编码. QString string; string=LineEdit1->text(); //取得LineEdit1返回的文字 QTextCodec *codec=QTextCodec::codecForName("GBK"); //转换编码 QCString chinese_string=codec->fromUnicode(string);//用QCString来存储返回的多字节编码 当然,你在头文件中就必需加入 #include #include #include 4.QTextStream对中文的支持 QTextCodec* codec = QTextCodec::codecForName("GBK"); /* 当前编码为"GBK" */ QTextStream mystream(&file); mystream.setCodec(codec); 5. QCString&QString QCString中不以unicode编码 QString以unicode为编码. qt内部使用unicode为编码,所以如果要在qt的部件如multilineedit中显示中文,则需要将非unicode的字符转换成unicode字符. QCString locallyEncoded = "中国人不是东亚病夫"; // text to convert QTextCodec *codec = QTextCodec::codecForName("GBK"); // get the codec for GBK QString unicodeString = codec->toUnicode( locallyEncoded ); http://www-128.ibm.com/developerworks/cn/l...oolkit/qt/i18n/ Qt 国际化编程 内容: 1. Qt 的文本显示 2. Qt 的文本输入 3. Qt 的打印 对本文的评价 订阅: developerWorks 时事通讯 于明俭   2002 年 1 月 09 日 本篇讨论 Qt 库对国际化的支持,将介绍 Qt 对文本显示,输入和打印的支持,和如何 使用Qt 开发国际化的软件。 Qt 目前的版本(2.2.4)对国际化的支持已经相当完善。 在文本显示上,Qt 使用了Unicode 作为内部编码,可以同时支持多种编码。 为 Qt 增加一种编码的支持也比较方便,只要 增加该编码和Unicode的转换编码便可以了。 Qt 目前支持ISO标准编码ISO 8859-1, ISO 8859-2,ISO 8859-3,ISO 8859-4,ISO 8859-5,ISO 8859-7,ISO 8859-9,和 ISO 8859-15(对于阿拉伯语和希伯来语的支持正在开发之中),中文GBK/Big5,日文 eucJP/JIS/ShiftJIS,韩文eucKR,俄文KOI8-R。 当然也可以直接使用UTF8编码。 Qt 使用了自己定义的Locale机制,在编码支持和信息文件(Message File)的翻译上弥补了目前Unix上所普遍采用Locale和gettext的不足之处。 Qt 的这种机制可以使 Qt 的同一组件(QWidget)上同时显示不同编码的文本。 比如,Qt 的标签上可以同时使用中文简体 和中文繁体文本。 在文本输入上,Qt 采用了XIM(X Input Method)标准协议,可以直接使用XIM输入服务器。 由于目前的绝大多数输入服务器都是针对单一语言
本文档为【QT完全手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_631463
暂无简介~
格式:doc
大小:87KB
软件:Word
页数:31
分类:互联网
上传时间:2010-12-04
浏览量:15