版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
QT完全手冊
嵌入式工具Qt的安裝與運(yùn)用
摘要
Qt是Trolltech公司的一個(gè)產(chǎn)品。Trolltech是挪威的一家軟件公司,主要開發(fā)兩種產(chǎn)品:一種是跨平臺應(yīng)用程序界面
框架:另外一種就是供應(yīng)應(yīng)做嵌入式Linux開發(fā)的應(yīng)用程序平臺,能夠應(yīng)用到PDA和各種移動(dòng)設(shè)備上.Qt和Qtopia分別
是其中具有代表性的兩個(gè)。(2023-05-0510:52:14)
Bylanfz出處:://tech.ccidnet/pub/article/c310_a71173_pl.html
作者:胡利民本文選自:開放系統(tǒng)世界
Qt是Trolltech公司的一個(gè)產(chǎn)品。Trolltech是挪威的一家軟件公司,主要開發(fā)兩種產(chǎn)品:一種是跨平臺應(yīng)用程序界面
框架:另外一種就是供應(yīng)應(yīng)做嵌入式Linux開發(fā)的應(yīng)用程序平臺,能夠應(yīng)用到PDA和各種移動(dòng)設(shè)備上。Qt和Qtopia分別
是其中具有代表性的兩個(gè)。
Qt是一個(gè)多平臺的C++圖形用戶界面應(yīng)用程序框架,它能給用戶供應(yīng)精致的圖形用戶界面所須要的全部元素,而且它是基
于一種面對對象的思想,所以用戶對其對象的擴(kuò)展是相當(dāng)簡潔的,并且它還支持真正的組件編程。
Qt是Linux桌面環(huán)境KDE的基礎(chǔ)。筆者認(rèn)為,可以說Qt與Windows下的Mfc的實(shí)質(zhì)是一樣的,所以Qt最大的優(yōu)點(diǎn)在
于其跨平臺性,可以支持現(xiàn)有的多種操作系統(tǒng)平臺,主要有:
?MS/V/indows95、Windows98、WindowsNT4.0、Windows2000、WindowsXP;
?Unix/XllLinux.SunSolaris.HP-UX、CompaqTrue64Unix,IBMAIX.SGIIRIX和很多其它Xll平臺:
?Macintosh!MacOSX;
?Embedded帶FramBufferLinux平臺。
下面簡潔介紹一下Qt/Embedded和Qtopia在Linux上的安裝和運(yùn)用,還有在開發(fā)過程中可能遇到的一些問題。
Qt和Qtopia的安裝
假如須要安裝一個(gè)帶FramBu"er的Qtopia平臺,須要有以下軟件(所列舉軟件以篤者運(yùn)用的為例):
?:
?Tmake1.11;
?(Qtopia1.6.0是基于該開發(fā)平臺上開發(fā)的):
?Qt/Embedded2.3.2forXI1;
?Qt3.1.2forXII。
在Troiltech公司的網(wǎng)站上可以下載該公司所供應(yīng)的Qt/Embedded的免費(fèi)版本。
Qtopia平臺安裝分為以下幾個(gè)步腺:
1.解包Qtopia
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfzqtopia-source-1.6.0(解包)
cdqtcpia-source-1.6.0
exportQPEDIR=$PWD(設(shè)置環(huán)境變量)
cd..
2.安裝“make
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfztmake-l.ll.tar.gz
exportTMAKEDIR=$PWD/tmake-l.11
exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportPATH=$TMAKEDIR/bin:$PATH
3.安裟Qt/Embedded2.3.4
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfzc|t-embedded-2.3.4-commercial.tar.gz
cdqt-2.3.4
exportQTDIR=$PWD
exportQTEDIR=$QTDIR
exportF'ATH=$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的參數(shù)中添加一system-jpeg和gif,使Qtopia平臺能支持jpeg、gif格式的圖形。
4.安裟Qt/Xll2.3.2
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfzc|t-xll-2.3.2-commercial.tar.gz
cdqt-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..
依據(jù)開發(fā)者本身的開發(fā)環(huán)境,也可以在configure的參數(shù)中添加別的參數(shù),比如-no-opengl或?no?xfs,可以鍵入./configure
-help來獲得一些幫助信息。
5.安裟Qt/Xll3.1.2
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfzc|t-xll-commercial-3.1.x.tar.gz
cdqt-xll-commercial-3.1.x
exportQTDIR=$PWD
exportQT3DIR=$QTDIR
exportF'ATH=$QTDIR/bin:$PATH
exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure-thread
make
cd..
6.安裝Qtopia
在Linux吩咐模式下運(yùn)行以下吩咐:
cdqtopia-source-1.6.x
exportQTDIR=$QTEDIR
exportQPEDIR=$PWD
exportPATH=$QPEDIR/bin:$PATH
cdsrc
./configure
nidke
cd
7.安裝Qtopia桌面
cdqtopia-source-1.6.x/src
exportQTDIR=$QT3DIR
./configure-qtopiadesktop
make
mvqtopiadesktop/bin/qtopiadesktop../bin
cd..
Qt和QtDesigner的運(yùn)用
依據(jù)上面的步瑛安裝完成了Qt/Embedded和Qtopia之后,就可以運(yùn)行這些程序了。
運(yùn)行QU勺虛擬仿真窗口:在Linux的圖形模式下運(yùn)行吩咐qvfb&:Qtopia只是一個(gè)用Qt/Embedded開發(fā)的程序,運(yùn)行
Qtopia,在圖形模式卜.運(yùn)行吩咐:
exportQTDIR=$QTEDIR,
qpe&;
這樣Qtopia的程序就運(yùn)行在QVFB上,即Qt的虛擬仿真窗口。
Qt/Embedded是針對嵌入式Linux而開發(fā)的?種開發(fā)工具,Qt封裝了一些常用的類,而且這些類的名字都以Q字開頭命
名,如QString、QDialog等。這里主要介紹一下如何利用QtDesigner來設(shè)計(jì)組件,并生成相應(yīng)的代碼。
在Qt中,把組件分為復(fù)合體、原始體和配件。而在Qt中,組件是由一些抽象類、困難的組件類、管理組件幾何特性的類等
組成。
Qt中有三個(gè)主要的基類:QObject,Qapplication和QWidgeto
在Qt中編程,利用Signal和Slot進(jìn)行對象之間的通信是Qt的主要特征。它與Windows中的消息機(jī)制特別類似,但是
Signal和Slot機(jī)制真正實(shí)現(xiàn)了一種消息的封裝。當(dāng)對象的狀態(tài)變更時(shí),發(fā)出Signal,通知全部的Slot接受Signal,盡管
它不知道哪些函數(shù)是Slot,Slot一起先也不知道哪些Signal可以接收.Signal和Slot之間不是一一對應(yīng)的關(guān)系,一個(gè)Signal
可以發(fā)給多個(gè)Slot,Slot也可以接收多個(gè)Signal。Slot除了可以接收Signal以外,與其它的成員函數(shù)沒有區(qū)分。這種機(jī)
制比運(yùn)用回調(diào)函數(shù)要敏捷,但是會(huì)減慢程序的運(yùn)行速度。不過在現(xiàn)在高速CPU的面前,這種損失是無足輕重的,而且它還能
保證程序的簡明性和敏捷性,特別便利。
在Qt的組件中,不僅定義了常用的成員變量和成員函數(shù),還定義了全部與該組件相關(guān)的Signal和Slot。
要將組件組合起來,最簡潔的方法就是運(yùn)用QtDesigner。首先要啟動(dòng)QtDesigner,在Linux吩咐模式下,鍵入以下吩咐
(假設(shè)Qt安裝在/usr/local下):
cdqt-2.3.2/bin
./designer
這樣就可以啟動(dòng)一個(gè)與Windows下的Delphi相類似的如圖1的界面。
然后新建個(gè)QFrame,將自己須要的組件干骯拖拉到這個(gè)Frame中,信任很多人都有過這樣的經(jīng)驗(yàn),此處就不再具體描
述了。完成之后存盤時(shí),會(huì)將這個(gè)新的組件保存為一個(gè)擴(kuò)展名為.5的文件。假設(shè)所存的文件名為test.ui,用vitest.ui來
查看這個(gè)文件,發(fā)覺這是一個(gè)用xml語言寫的一個(gè)文本。下面用這個(gè)test.ui生成相應(yīng)的test.h和test.cpp。同樣還是在
這個(gè)書目下,可以看到一個(gè)uic的工具,這個(gè)是Qt特地用來將ui文件生成.h和.cpp文件的,在終端模式卜.鍵入以卜吩咐:
./uic-otest.htest.ui
./uic-otest.h-itest.cpptest.ui
此時(shí)就能看到生成了相應(yīng)test.h和test.cpp,這是一個(gè)類。當(dāng)然這只是一些表面的東西,還須要在這些代碼中添加相應(yīng)的
Signal和Slot,完成所須要的操作。值得留意的是,相應(yīng)版本生成的ui最好用相應(yīng)版本的uic來生成代碼。假如用Qt3.1.2
的Designer生成的ui,用Qt2.3.2的uic來生成代碼,生成的代碼都會(huì)是一些空函數(shù)。
在一般的開發(fā)過程中,首先通過這個(gè)ui生成的一個(gè)類,在Qt中通常叫做Base,如上面的例子,叫做testBase:然后再新
建一個(gè)類,來繼承這個(gè)Base。通常叫做實(shí)現(xiàn)類[mpl,如testlmpL在這個(gè)實(shí)現(xiàn)類里面定義所須要的成員函數(shù)、Signal和
Slot,因?yàn)閡i可能是常常須要改動(dòng)的。假如這樣做,每次只須要在Designer中修改ui,而不用去理睬這些成員函數(shù)、Signal
和Slot了。
編譯一個(gè)Qt程序必定須要Makefile,在Qt中供應(yīng)了一個(gè)特地生成Makefile的工具,就是tmake。用tmake須要依據(jù)編
寫的程序?qū)懸粋€(gè).pro文件。.pro文件特別簡潔,有固定的格式,下面是一個(gè)例子:
TEMPLATE=app
CONFIG=qtopiawarn_onrelease
M0C_DIR=tmp
OBJECTS_DIR=tmp
HEADERS=fcrs.h\
structs.h\
globalfunc.h\
globalvers.h\
testimpl.h
SOURCES=main.cpp\
globalfunc.cpp\
globalvers.cpp\
testimpl.cpp
INTERFACES=test.ui\
TARGET=fcrs
生成這個(gè).pro文件之后,在終端中鍵入下面的啖咐:
tmake-oMakefile
就自動(dòng)生成了一個(gè)Makefile,運(yùn)用這個(gè)Makefie編譯所編寫的程序就可以九
Qt/Embedded開發(fā)環(huán)境建立的過程
Qt/Embedded開發(fā)環(huán)境建立的過程:
(這些軟件可以免費(fèi)從trolltech的WEB或FTP服務(wù)器上下載)
?tmake1.11或更高版本:(生成Qt/Embedded應(yīng)用工程的Makefile文件)
?Qt/Embedded2.3.7(Qt/Embedded安裝包)
?Qt2.3.2forXII;(Qt的XII版的安裝包,它將產(chǎn)生xll開發(fā)環(huán)境所須要的兩個(gè)工具)
1、安裝tmake
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfztmake-l.ll.tar.gz
exportTMAKEDIR=$PWD/tmake-l.11
exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportPATH=$TMAKEDIR/bin:$PATH
2.安裝Qt/Embedded2.3.7
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfzC|t-embedded-2.3.7.tar.gz
cdqt-2.3.7
exportQTDIR=$PWD
exportQTEDIR=$QTDIR
exportF'ATH=$QTDIR/bin:$PATH
exportL.D_LIBRARY_PATH=$QTDIR/lib:$LD_LIBF<ARY_PATH
./configure-qconfig-qvfb-depths4,8,16,32
makesub-src
cd..
上述吩咐./configure-qconfig-qvfb-depths4,8,16,32指定Qt嵌入式開發(fā)包生
成虛擬緩沖幀工具qvfb,并支持4,8,16,32位的顯示顏色深度。另外我們也可以在
configure的參數(shù)中添加一system-jpeg和gif,使Qt/Embedded平臺能支持jpeg、gif
格式的圖形。
上述吩咐m(xù)akesub-src指定按精簡方式編譯開發(fā)包,也就是說有些Qt類未被編
譯。Qt嵌入式開發(fā)包有5種編譯范圍的選項(xiàng),運(yùn)用這些選項(xiàng),可限制Qt生成的庫文件的大
小,但是您的應(yīng)用所運(yùn)用到的一些Qt類將可能因此在Qt的庫中找不到鏈接。編譯選項(xiàng)的具
體用法可運(yùn)行./configure-help吩咐查看。
3.安裝Qt/Xll2.3.2
在Linux吩咐模式下運(yùn)行以下吩咐:
tarxfzqt-xll-2.3.2.tar.gz
cdqt-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..
依據(jù)開發(fā)者本身的開發(fā)環(huán)境,也可以在configu?e的參數(shù)中添加別的參數(shù),比如
-no-opengl或?no-xfs,可以鍵入./configure-help來獲得一些都助信息。
假如Qt/Embedded的應(yīng)用是在UNIX平臺下開發(fā)的話,那么它就可以在開發(fā)的機(jī)器
上以一個(gè)獨(dú)立的限制臺或者虛擬緩沖幀的方式來運(yùn)行,對于后者來說,其實(shí)是有一個(gè)XII
的應(yīng)用程序虛擬了一個(gè)緩沖幀。通過指定顯示設(shè)備的寬度,高度和顏色深度,虛擬出來
的緩沖幀將和物理的顯示設(shè)備在每個(gè)像素,保持一樣。這樣每次調(diào)試應(yīng)用時(shí)開發(fā)人員就
不用總是刷新嵌入式設(shè)備的FLASH存儲(chǔ)空間,從而加速了應(yīng)用的編譯、鏈接和運(yùn)行周期。
運(yùn)行Qt的虛擬緩沖幀工具的方法是:在Linux的圖形模式卜.運(yùn)行吩咐:
qvfb(回車)
當(dāng)Qt嵌入式的應(yīng)用程序要把顯示結(jié)果輸出到虛擬緩沖幀時(shí),我們在吩咐行運(yùn)行這
個(gè)程序時(shí),在程序名后加上?qws的選項(xiàng)。例如:$>hello-qws
一,QT/E的安裝。
在本機(jī)中安裝了包括QT4.0.1(WINDOWS版本)以及QT/E2。3。7(LINUX版本)。
QT/E式安裝在我的虛擬機(jī)中。因?yàn)镼T/E2.3.7的版本問題,其相宜在REDHAT9。。版本(或更低版本)下安裝,否則安
裝不勝利。
QT/E安裝過程困難,具體細(xì)微環(huán)節(jié)可以參考下面這篇文章?!禥t/Embedded開發(fā)環(huán)境建立的過程》
此文在網(wǎng)上可搜尋到。
本機(jī)下虛擬機(jī)中QT/E安裝路徑為:/home/wangxl/QTE/qt-2.3.7
QT/X11安裝路徑為:/home/wangxl/QTE/q,2.3.2
Tmake安裝路徑為:/home/wangxl/QTE/Tmake-1.8
QT/E下或地址為:ftp://ftp.rediris.es/mirror/Qt/source/
Tmake下載地址為:ftp://ftp.trolltech/freebies/tmake/
二.QT與QT/E以及QT3與QT4之間的區(qū)分
相對來說QT與QT/E的語法一樣,所不同之處在庫類大小或者庫類函數(shù)大小不同而已。QT/E相對于QT來說,不具有少數(shù)
類或者少數(shù)函數(shù)的支持。具體QT/E是否包含某個(gè)類或者包含某個(gè)類中的函數(shù),我的方法是在QT/E安裝書目下的include
文件夾中去查找。
QT3和QT4有很多不同點(diǎn),主要不同也是在于庫類以及支持函數(shù)有所變更,比如,有些QT3中的函數(shù),在QT4中被其他
函數(shù)名所代替,因此很多QT4程序在QT3環(huán)境下無法執(zhí)行。QT/E2.3.7與QT3基本相同,除了我前面提到的QT與QT/E
的差別。
三.QT/E編譯與執(zhí)行。
1.在QT/E編譯與執(zhí)行前要先設(shè)置TMAKE與QT/ELIB環(huán)境,具體方法如下:
[root@localhosttmake-1.8]#exportTMA<EDIR=$PWD
[root@localhosttmake-1.8]#exportTMA<EPATH=$TMAKEDIR/lib/qws/linux-x86-g++
[root@localhosttmake-1.8]#exportPATH=$TMAKEDIR/bin:$PATH
[root@localhostqt-2.3.7]#exportQTDIR=$PWD
[root@localhostqt-2.3.7]#exportQTEDIR=$QTDIR
[root@localhostqt-2.3.7]#exportPATH=SQTDIR/bin:$PATH
[root@localhostqt-2.3.7]#exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
2.假如你是用DESIGNER工具設(shè)計(jì)的界面(后面有講),則要將*.ui文件轉(zhuǎn)換成*.h文件和*.cpp文件。轉(zhuǎn)換方法如下:
uic-otest.htest.ui
uic-otest.cpp-itest.htest.ui
3.編寫一個(gè)十.p「o文件(用來生成Makefile文件用),該文件格式比較固定。
如文件基本格式如下(以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.3.7/include
REQUIRES=
4.生成Makefile文件
方法為:tmake-oMakefile
5編譯生成可執(zhí)行文件
make
6打開CVFB
進(jìn)入安裝QT/X11所在書目,在BIN書目下執(zhí)行程序qvfb。
有時(shí)候須要修改qvfb執(zhí)行時(shí)的deptb參數(shù)才能夠執(zhí)行QT/E程序??梢愿纱嘣赒VFB打開窗口的Configure彩單項(xiàng)中選擇,
也可以用如下吩咐執(zhí)行QVFBo
./qvfb-width**-height**-depth**
7.執(zhí)行QT/E程序
如□/TEST
在QVFB程序打開的窗口中將出現(xiàn)TEST程序的顯示.
四.Qt/e與QT/X11
安裝QT/E的同時(shí)還須要安裝QT/X11與Tmake,Tmake是用來幫助生成Makefile文件的。安裝QT/X11主要是向QT/E
供應(yīng)designer工具和qvfb工具的。
Designer可以用來設(shè)計(jì)圖形界面,最終生成.ui文件,可通過UIC吩咐轉(zhuǎn)換為相應(yīng)的C++文件。
QVFB模擬幀緩沖,供應(yīng)QT/E程序的顯示平臺。
五.QT/I=程序ARM板上執(zhí)行
在我虛擬機(jī)上可以執(zhí)行的QT/E程序不能在ARM板上執(zhí)行,須要對QT/E進(jìn)行重新編譯,并須要設(shè)置響對于ARM板系統(tǒng)的
編譯環(huán)境,具體方法可以參考我另外的一文《QT/E開發(fā)記錄》
六.QT/E支持中文顯示問題
QT/E須要字體轉(zhuǎn)換才能顯示中文。具體方法可以參考我另外的■文《QT/E開發(fā)記錄》
但是由于缺少UNICODE的QPF文件的字體,中文字大小不勻稱問題尚沒解決。
七QT/E的一些參考資料:
QT中文論壇
(關(guān)于QT3的類,以及類函數(shù)可以在這找尋)
供應(yīng)QT3編程最好書籍的電子版本《C++GUIProgrammingwithQT3》(本機(jī))
關(guān)于QT4可以參考QTASSISTNAT(本機(jī)中),另外QTASSISTNAT中也可以查找QT3的類及庫等。
設(shè)置Qtopia的build環(huán)境
1、環(huán)境變量
在目標(biāo)系統(tǒng)上buildQtopia必需設(shè)定必要的環(huán)境變量,如QTDIR,假如依靠多個(gè)版本的Qt,則須要用環(huán)境變量指向用到
的庫配置。
一種方法是將環(huán)境變量的設(shè)定寫入文件,通過運(yùn)行source吩咐應(yīng)用文件的內(nèi)容。
舉例說明:
Linux/bash下建立環(huán)境變量設(shè)定文件qtopia.sh,內(nèi)容如下:
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
須要時(shí)運(yùn)行sourceqtopia.sh即可應(yīng)用以上環(huán)境變量。
另外也可以通過在.bash"文件中設(shè)定別名來應(yīng)用這些環(huán)境變量。假設(shè)環(huán)境變量設(shè)置文件存放在home書目的bin下,則
可在.bashrc中加入:
aliasqtc?pia='source~/bin/qtopia.sh'
2、創(chuàng)建自定義的配置文件
整個(gè)Qtopia系統(tǒng)在build過程中須要三個(gè)獨(dú)立的配置系統(tǒng):
1)Qt/Ernbedded配置文件
2)tmake-用于buildQtopia1.x和一些第三方軟件
3)qmake-用于buildQtopia2及以上版本
在buildQtopia以前,先要完成以上三項(xiàng)的配置。
下面是創(chuàng)建一個(gè)''myarm”配置的例子:
cp-rSTMAKEDIR/lib/qws/linux-arm-g++$TMAKEDIR/lib/qws/linux-myarm-g++
cp-rSQTEDIR/configs/linux-arm-g++-shared$QTEDIR/configs/linux-myarm-g++-shared
cp-rsQPEDIR/mkspecs/qws/linux-arm-g4-+$QPEDIR/mkspecs/qws/linux-myarm-g++
Qt/Embedded
編輯$QTEDIR/configs/linux-myarm-g++-shared,修改其中的utilities和flags成適合系統(tǒng)的內(nèi)容,如:
可能須要修改SYSCONF_CXX,SYSCONF_CC和SYSCONF_UNK,指定正確的編譯器.可能須要增加編譯選項(xiàng)
-DMYARM,在代碼中增加宏#1£<^MYARM(用以增加設(shè)備相關(guān)的代碼)
tmake
編輯$TMAKEDIR/lib/qws/linux-myarm-g++/tmake.conf,修改用到的utilites和flags:
可能須要修改TMAKE_CC,TMAKE_CXX和TMAKEJJNK
可能須要增加-DMYARM選項(xiàng)
qnidke
修改$QPEDIR/mkspecs/qws/linux-myarm-g++/qmake.conf:
QMAKE-CC,QMAKE_CXX和QMAKE_LINK
-DMYARM
留意:qrnake.conf的最終一行必需是:
exists($$(QPEDIR)/src/config.pri):include($$(QPEDIR)/src/config.pri)
可用于書目名的字符
正則表達(dá)式字符
Qtopia1.9.x和Qtopia2.0.02.1.0對字符有以下的耍求;
Qtopiabuild系統(tǒng)訪問到的任何書目都不能包含正則表達(dá)式字符
任何能被QRegExp識別的特殊字符和字符序列都可能引起問題
字符只匹配自身
不要將正則表達(dá)式字符用于書目名,包括(但不僅限于):+.?*\()口人${}
注:Qtopia2.1.0和2.1.1及以上版本可以通過應(yīng)用patch解除以上的限制
空格
Qtopiabuild系統(tǒng)不支持書目名中包含空格。
必需保證:
build系統(tǒng)訪問到的書目不包含空格
訪問書目的各層上級書目也不包含空格
Qtopia的依靠和必要條件
簡介
為了使Qtopia正確運(yùn)行,必需滿意以下的必要條件:
安裝適當(dāng)?shù)木幾g/交叉編譯工具
Qt/Embedded-2.3.11
Linuxkernel供應(yīng)共享內(nèi)存、mmap和socket支持
Linux支持framebuffer
Linux支持OSS聲音或支持與OSS兼容的ALSA聲音。進(jìn)一步的信息參考TheQtopaA/V&AppearanceFAQ
還須要以下的庫:
Video4Linux
zlib
libuuid(akdluuid)
libjpeg
xorg或Xll
注: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將這個(gè)值設(shè)置為0x4000c.
SNDCTL_DSP_SETFM-Qtopia設(shè)置為AFMT_S16_LE
SNDCTL_DSP_STEREO-Qtopia設(shè)置為1/true.
SNDCTL_DSP_SPEED-Qtopia設(shè)置為44100.
SNDCTL_DSP_GETOSPACE
Qtopia還須要/dev/dsp可以以堵塞方式和非堵塞方式打開。以上的設(shè)定是Qtopia須要的設(shè)定,但可以容許少許的偏差,
但假如不設(shè)定成Qtopia須要的值則不能保證音頻能平滑播放。假如您的設(shè)備只支持22500的播放速率,則在調(diào)用
SNDCTL_DSP_SPEED時(shí)要報(bào)告此速率,以免造成音頻質(zhì)量的缺損。不過,假如系統(tǒng)不支持GETOSPACE,非堵塞寫入
或SNDCTL_DSP_SET_FRAGMENT,幾乎可以確定必定會(huì)損失音頻質(zhì)量。
Video4Linux
Camera應(yīng)用程序須要支持Video4Linuxvl的內(nèi)核,Qtopia沒有供應(yīng)當(dāng)支持。
請參考正式的VideoforLinux資源站點(diǎn),參看API的具體內(nèi)容。
zlib
zlib可以從下載
libuuid(akaluuid)
Qtopia不供應(yīng)uuid支持。這個(gè)庫可以從站點(diǎn)下載
另外,假如你有SuSELinux的發(fā)行版,e2fsprogs-devel這個(gè)包可以供應(yīng)uuid支持;在Debian中對應(yīng)的包是uuid-dev.
這個(gè)庫應(yīng)當(dāng)放在標(biāo)準(zhǔn)路經(jīng)下/usr/lib/libuuid.so
請用包管理工具來查看該包是否已經(jīng)安裝:
rpm-qa|grepe2fsprogs
假如尚未安裝,請從安裝盤或鏡像站安裝這個(gè)包。
須要留意的是,假如沒有安裝e2fsprogs-devel,在鏈接時(shí)會(huì)發(fā)生下面的錯(cuò)誤:
/usr/lib/gcc-lib/i586-suse-Linux/3.3.3/../../../../i586-suse-linux/bin/ld:
cannotfind-luuid
假如安裝了該庫仍遇到上述錯(cuò)誤,則檢杳Qtopia的configure腳本的-L和-R參數(shù),以確定腳本包含了庫的實(shí)際路徑。關(guān)
于交叉編譯的信息可參考SystemIntegrator'sGuide.
libjpeg
Qtopia不供應(yīng)jpeg庫。Qtopia須要Qt/Embedded配置為支持jpeg.
libjpeg庫可從下載
此外,假如你有SuSE發(fā)行版,libjpeg這個(gè)包可供應(yīng)當(dāng)庫。這個(gè)庫應(yīng)當(dāng)安裝在標(biāo)準(zhǔn)路經(jīng)/usr/lib/libjpeg.so
檢查libjpeg包是否己經(jīng)安裝:
rpm-qa|greplibjpeg
假如未安裝,請從安裝盤或鏡像站安裝。
關(guān)于libjpeg交叉編譯的信息,可參考SystemIntegrator'sGuide.
xorg或Xll
開發(fā)包括有從以下站點(diǎn)下載:
相關(guān)探討
確定起先Qtopia須要的步驟,參考:Gettingstarted
將Qtopia集成到特定設(shè)備上的重點(diǎn)步驟,參考:SystemIntegrator'sguide
Qtopia的FAQs,參看:Qtopiaindexpage
系統(tǒng)是完全安裝RedHat9.0(里面帶QT3.1).板子是X-Hyper250B的,Toolchain用的是開發(fā)板帶的
hybus-arm-linux-Rl.l
交叉編譯所用到的文件:
qt-embedded-2.3.10-free.tar.gz
qt-xll-2.3.2.tar.gz
qtopia-f"ee-source-2.1.1.tar.gz
tmake-l.13.tar.gz
e2fsprogs-1.35.tar.gz
主機(jī)x86的編譯步驟:
tarxfzqt-embedded-2.3.10-free.tar.gz(解壓后qt-2.3.10改名為qt-2.3.10?host)
exportQTEDIR=$PWD/qt-2.3.10-host
tarxfzqt-xll-2.3.2.tar.gz(解壓后qt-2.3.2)
exportQT2DIR=$PWD/qt-2.3.2
tarxfzqtopia-free-source-2.1.1.tar.gz(解壓后qtopia-free-2.1.1改名為qtopia-2.1.1-host)
exportQPEDIR=$PWD/qtopia-2.1.1-host
tarxfztmake-1.13.tar.gz(解壓后tmake-1.13)
exportTMAKEDIR=$PWD/tmake-1.13
exportTMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-x86-g++
exportPATH=$TMAKEDIR/bin:$PATH
cdqt-2.3.2
exportQTDIR=$QT2DIR
exportPATH=$QTDIR/bin:$PATH
exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure-no-xft
make
make-Ctools/qvfb
cd..
cdqt-2.3.10-host
exportQTDIR=$PWD
exportF'ATH=$QTDIR/bin:$PATH
exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
mkdirbin(因?yàn)榻鈮汉蟮膓t-2.3.10沒有bin文件夾)
cp$QT2DIR/biri/uicbin
cp$QT2DIR/tools/qvfb/qvfbbin
cp$QPEDIR/src/qt/qconfig-qpe.hsrc/tools/
./configure-qconfigqpe-qvfb-thread-system-jpeg-gif-depths4,8,16,32
make
cd..
tarxzfe2fsprogs-l.35.tar.gz
cde2fsprogs-1.35
./configure-enable-elf-shlibs
makeinstalllib/uuid/
注:這是編譯x86的libuuid庫
cd..
cdqtcpia-2.1.1-host
exportPATH=$QPEDIR/bin:$PATH
exportLD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
./configure
make
編譯例子:
$qmake-project==>>我都是這樣創(chuàng)建.pro文件的
$tmake-oMakefile
$make
$qvfb&
$./hello-qws或者$qpe
還沒怎么細(xì)致探討過。
目標(biāo)機(jī)a「m-linux的編譯步驟:
tarxfzqt-embedded-2.3.10-rree.tar.gz(解壓后qt-2.3.10改名為qt-2.3.10-target)
exportQTEDIR=$PWD/qt-2.3.10-target
tarxfzqt-xll-2.3.2.tar.gz
exportQT2DIR=$PWD/qt-2.3.2
tarxfzqtx)pia-free-source-2.1.1.tar.gz(解壓后qtopia-free-2.1.1改名為qtopia-2.1.1-target)
exportQPEDIR=$PWD/qtopia-2.1.1-target
tarxfztmake-1.13.tar.gz
exportTMAKEDIR=$PWD/tmake-1.13
exportTMAKEPATH=$PWD/tmake-1.13/lib/qws/linux-arm-g++
exportPATH=$TMAKEDIR/bin:$PATH
cdqt-2.3.2
exportQTDIR=$QT2DIR
exportPATH=$QTDIR/bin:$PATH
exportL.D_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure-no-xft
make
make-Ctools/qvfb
cd..
cdqt-2.3.10-target
exportQTDIR=$PWD
exportPATH=$QTDIR/bin:$PATH
exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
mkdirbin
cp$QT2DIR/bin/uicbin
cp$QT2DIR/tools/qvfb/qvfbbin
cp$QPEDIR/src/qt/qconfig-qpe.hsrc/tools/
./configure-xplatformlinux-arm-g++-qconfigqpe-qvfb-thread-system-jpeg-gif-depths4,8,16,32
make
cd..
注:這里須要arm版本的libjpeg.so.62,hybus-arm-linux-Rl.l里面包含這個(gè)庫:如沒有可以上網(wǎng)下載。
tarxzfe2fsprogs-1.35.tar.gz
cde2fsprogs-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-Rl.l/arm-linux
makeinstalllib/uuid/===>>>這步安裝至ijhybus-arm-linux-Rl.l/lib上的libuuid.so.1.2版本不對,
要cplib/libuuid.so.1.2../hybus-arm-linux-Rl.l/lib
注:這步是交叉編譯arm的libuuid庫,配置詳情見./configure--help
(還要多謝這里面的大哥呀,好不簡潔才在網(wǎng)上找到的)
cd..
cdqtopia-2.1.1-host
exportF'ATH=$QPEDIR/bin:$PATH
exportLD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
cpsrc/libraries/qtopia/custom-linux-ipaq-g++.cppsrc/libraries/qtopia/custom-linux-arm-g++.cpp
cpsrc/libraries/qtopia/custom-linux-ipaq-g++.hsrc/libraries/qtopia/custom-lnux-arm-g++.h
./configure-xplatformlinux-arm-g++
make
注:這里須要libstdc++.so和libgcjs.so庫
develop環(huán)境下qt中文化程序設(shè)計(jì)
原文出處:Linux公社
原文作者:yfyOOl
kdevelop是一款在linux平臺下可以同windows環(huán)境下的vc相媲美的集成開發(fā)環(huán)境,qt則是一款支持包括windows和
linux平臺
的GUI庫,可以說它是linux下的MFC.在顯示上,qt運(yùn)用Unicode作為內(nèi)部編碼,可以支持多種編碼,如何運(yùn)用qt進(jìn)行國際
化編程
在網(wǎng)上可以找到很多資料的,但都是針對較早版本的qt進(jìn)行介紹的.qt3.0.5中對這些作了些改動(dòng),這些方法就相應(yīng)的要做些改
動(dòng).
而且在kdevelop中開發(fā)qt應(yīng)用程序,將會(huì)事半功倍,我的開發(fā)環(huán)境為redhat8.0(需安裝kde開發(fā)工具包).
首先在linux中打開kdevelop集成開發(fā)環(huán)境,用它的應(yīng)用程序向?qū)陆?個(gè)qt的SDI的應(yīng)用程序框架.這個(gè)同windows下
vc很類似.它
將會(huì)為你自動(dòng)生成版本號,作者,e-mail等信息的單文檔對話框的應(yīng)用程序框架.我們首先對它自動(dòng)生成的程序進(jìn)行漢化(qtl
是
我的項(xiàng)目名稱).
1.漢化自動(dòng)生成的程序
添加翻譯文件
在“項(xiàng)目”菜單中選擇“添加新的翻譯文件”,語言選擇"zh_CN.Gb2312”.將會(huì)創(chuàng)建個(gè)zh_CN.GB2312字符編碼的翻譯文
件.擴(kuò)展名
為".ts".在qt3.0.5環(huán)境下,打開"*.ts”翻譯文件的工具是linguist.你可以在“工具“菜單中選擇"QT
linguist”來打開,在linguist菜單中選擇"file"->"open”打開所要翻譯的翻譯文件.此時(shí)可以在linguist窗口中的source
text中
的文木就是你所要翻譯的文本,選擇所要翻譯的文本,在下方有一個(gè)類似一頁紙一樣的地方,在translate下輸入翻譯后的文本.
所示.
翻譯完這些文件后,編譯運(yùn)行,在我們的程序里并不能顯示中文,還是英文,我們還須要做的就是用Irelease吩咐將翻譯后的文
件轉(zhuǎn)換
成文件才可以運(yùn)用.在限制臺下進(jìn)入你用kdevelop所生成的應(yīng)用程序書目.
>lreleaseMakefile.am
qt3.0.5用這個(gè)兩個(gè)程序取代了以前版本的findtr和msg2qm吩咐.在kdevelop集成環(huán)境中打開main.cpp主函數(shù),
QApplicationa(argczargv);
,,
a.setFont(QFont(helvetica"/10));
QTranslatortor(0);
tor.load;QString("qtl.")+QTextCodec::locale()z);
11tor.load(QString("qtl.zh_CN.GB2312"),);
a.installTranslator(&tor);
/*uncommentthefollowingline,ifyouwantaWindows95
look*/
//a.setStyle(WindowsStyIe);
QtlApp*qtl=newQtlApp();
//Forml*qtl=newForml();
a.setManWidget(qtl);
此處:
tor.load;QString("qtl.")+QTextCodec:JocaleO,);
是依據(jù)客戶環(huán)境的來載入當(dāng)前書目下相應(yīng)的翻譯文件的中文環(huán)境默認(rèn)的為
locale.redhatlocalegbl8030z
此處要么把翻譯文件名由qtl.zh_CN.GB2312.qm改為qtl.zh_CN.GB18030.qm,要么將這句改為
tor.load;QString("qtl.zh_CN.GB2312"),1'Z);
不過為了國際化編程的須要,建議采納第一種方法,更改后編譯運(yùn)行,你會(huì)發(fā)覺你的程序已經(jīng)是中文界面的了.
2.漢化自己的對話框
大多數(shù)狀況下我們都須要自己來設(shè)計(jì)對話框,qt為我們供應(yīng)了特別好的對話框編輯器QtDesigner,可以很便利的設(shè)計(jì)我們的
對話框,qt
的信號和槽等,關(guān)于QtDesigner的運(yùn)用,限于篇幅,不再贅述.以前面的程序?yàn)榛A(chǔ).在kdevelop中選擇"文件新建",選擇
Qt
Designer文件(*.ui).在文件名一欄中填寫"mydialog",最終點(diǎn)擊確定按鈕,即會(huì)啟動(dòng)QtDesigner,此處只拖了一個(gè)Label,
寫了一
些英文字符,對話框的name屬性為Forml.將對話框mydialog.ui保存.
在限制臺下進(jìn)入你用kdevelop所生成的應(yīng)用程序書目.
>lupdateMakefile.am
同樣用"QT
linguist"來翻譯qtl.zh_CN.GB2312.tr文件.比時(shí)linguist的context中會(huì)多出Forml的選項(xiàng),這里面就是我們新建的對
話框要翻譯的
選項(xiàng).依據(jù)前面的方法進(jìn)行漢化.
>lreleaseMakefile.am
生成qtl.zh_CN.GB2312.qm文件.
編譯將會(huì)生成mydialog.cppmydialog.hmydialog.moc文件.然后將main.cpp中的
QtlApp*qtl=newQtlApp。;改為
Forml*qtl=newForml();
并將"mydialog.h"#include
進(jìn)去.依據(jù)前面的方法更改tor.load中加載的翻譯文件.編譯運(yùn)行,你的對話框也是中文的了.
3.其它的一些說明
由于qt返回的是Unicode編碼,譬如你在LineEdit中干脆輸入中文,返回的就是??,qt中可以干脆運(yùn)用QTextCodec來轉(zhuǎn)換
字符串的編碼.
QStringstring;
string=LineEditl->text();〃取得LineEditl返回的文字
QTextCodec*codec=QTextCodec::codecForName("GBK");
〃轉(zhuǎn)換編碼
QCString
chinese__string=codec->fromUnicode(string);//niQCString來存儲(chǔ)返回的多字節(jié)編碼
當(dāng)然,你在頭文件中就必需加入
#incltde<qtextcodec.h>
#inclLde<qstring.h>
#inc幾de<qcstring.h>
4.QTextStream對中文的支持
QTextCodec*codec=QTextCodec::codecForName("GBK");/*當(dāng)前編碼為"GBK"*/
QTextStreammystream(&file);
fiiyblredm.bt:LCudec(cudec);
5.QCSt-ing&QString
QCString中不以unicode編碼
QString以unicode為編碼.
qt內(nèi)部運(yùn)用unicode為編碼,所以假如要在qt的部件如multilineedit中顯示中文,則須要將非unicode的字符轉(zhuǎn)換成
unicode字符.
QCStringlocallyEncoded="中國人不是東亞病夫";〃texttoconvert
QTextCodec*codec=QTextCodec::codecForName("GBK");//getthecodecforGBK
QStringunicodeString=codec->toUnicode(locallyEncoded);
Qt國際化編程
內(nèi)容:
1.Qt的文本顯示
2.Qt的文本輸入
3.Qt的打印
對本文的評價(jià)
訂閱:
developerWorks時(shí)事通訊
于明儉
2023年1月09日
本篇探討Qt庫對國際化的支持,將介紹Qt對文本顯示,輸入和打印的支持,和如何之用Qt開發(fā)國際化的軟件。
Qt目前的版本(2.2.4)對國際化的支持已經(jīng)相當(dāng)完善。在文本顯示_L,Qt運(yùn)用了Unicode作為內(nèi)部編碼,可以同時(shí)支持
多種編碼。為Qt增加一種編碼的支持也比較便利,只要增加該編碼和Unicode的轉(zhuǎn)換編碼便可以了。Qt目前支持ISO
標(biāo)準(zhǔn)編碼ISO8859-1,ISO8859-2,ISO8859-3,ISO8859-4,ISO8859-5,ISO8859-7,ISO8859-9,和ISO
8859-15(對于阿拉伯語和希伯來語的支持正在開發(fā)之中),中文GBK/Big5,日文eucJP/JIS/ShiftJIS,韓文eucKR,俄
文K018-Ro當(dāng)然也可以干脆運(yùn)用UTF8編碼。
Qt運(yùn)用了自己定義的Locale機(jī)制,在編碼支持和信息文件(MessageFile)的翻譯上彌補(bǔ)了目前Unix上所普遍采納Locale
和gettext的不足之處。Qt的這種機(jī)制可以使Qt的同一組件(QWidget)上同時(shí)顯示不同編碼的文本。比如,Qt的標(biāo)
簽上可以同時(shí)運(yùn)用中文簡體和中文繁體文本。
在文本輸入上,Qt采納了XIM(XInputMethod)標(biāo)準(zhǔn)協(xié)議,可以干脆運(yùn)用XIM輸入服務(wù)器。由于目前的絕大多數(shù)輸入服
務(wù)器都是針對單一語言的,所以在Qt的標(biāo)準(zhǔn)輸入組件(QLineEdit,QMultiLineEdit)中的輸入受到單一編碼的限制,Qt還
不支持動(dòng)態(tài)切換編碼輸入的支持,這是它的不足之處。
1.Qt的文本顯示
像般的國際化過程一樣,Qt運(yùn)用了類似GNUgettext-樣的函數(shù)QObject::tr(),它用于從Qt的信息文件.qm中
取出信息,這些信息是經(jīng)過Qt的工具處理的。Qt在處理編碼時(shí)還運(yùn)用了QTranslator類,可用于指定整個(gè)應(yīng)用軟件的
的信息文件。
運(yùn)用Qt編寫國際化的程序,最好不要在程序中干脆運(yùn)用特殊編碼的文本。比如要編寫一中文界面的Qt程序,應(yīng)當(dāng)在程
序中運(yùn)用英文,程序編寫完成后,把文本提取出來翻譯。這樣,程序還可以依據(jù)Locale的不同,支持多種語言。下面介
紹如何在Qt程序中標(biāo)注字符串,如何提取并翻譯文本。
下面是?段運(yùn)用了QObject::"。的代碼,它建立了一個(gè)彈出菜單,菜單項(xiàng)是"Quit",它被放置在菜單條上,在菜單條上
顯示的是標(biāo)簽"File"。
QPopupMenu*popup;
popup=:newQPopupMenu(this);
popup->insertltem(tr("&Quit"),qApp.SLOT(quit()));
menubar->lnsertitem(tr("&Flle"),popup);
對于絕大多數(shù)狀況,可以用上述方法處理。不過有時(shí)在定義某些變量中運(yùn)用的字符串,不能運(yùn)用上述方法,但是為了讓Qt
提取并翻譯該字符串,必需用某種方法標(biāo)記出來。Qt定義了QT_TR_NOOP()和QT_TRANSLATE_NOOP()來標(biāo)記它
們。前者用于單個(gè)字符串,后者用于多個(gè)字符串。比如,
staticconstchar*strings[]={
QT_TR_NOOP("Hello"),
QT_TR_NOOP("World")
};
有時(shí)須要運(yùn)用printf/sprintf之類的函數(shù)動(dòng)態(tài)生成字符串,比如,
QStingss;
s.sprintf("Button%d",i);
but->setText(s);
對這種運(yùn)用方式的國際化是運(yùn)用arg()函數(shù)。
QStrings=tr("Button%1").arg(i);
but->setText(s);
提取上述信息的方法是運(yùn)用Qt供應(yīng)的工具findtr吩咐:
findtr[filename].cpp>il8n.po
它類似于GNU的xgettext,上述文件的提取信息文件內(nèi)包含,
"Content-Type:text/plain;charset=iso-8859-l\n"
#:il8n.cpp:34
msgid"lExampleWidget::&File"
msgstr,,w
接下來是文本翻譯過程。在Qt中翻譯信息文件時(shí)應(yīng)當(dāng)留意以下事項(xiàng):(1)提取的信息文件的編碼是iso-8859-l,在翻譯
成某種語言(編碼)時(shí)應(yīng)當(dāng)留意改動(dòng)它的字符集,比如對中文GB2312和Big5編碼,應(yīng)當(dāng)是,"Content-Type:text/plain;
charset==gb2312\n"^ifi"Content-Type;text/plain;charset=big5\n"^(2)提取的信息有一,個(gè)范圍,比如_L面的文
件指定的范圍是ExampleWidget,在翻譯前應(yīng)當(dāng)把它去掉,變成msgid"::&File"o(3)被翻譯的字符串可能含有加速
鍵符號,如"&File“中的“F",假如翻譯成中文最好保留該信息,它可以翻譯成"文件(&F),
對于翻譯后的文件(比如上面的翻譯文件存為il3n_gb.po),必需運(yùn)用Qt供應(yīng)的工具msg2qm把它轉(zhuǎn)換為,qm文件
才能運(yùn)用,
>msg2qmil8n_gb.poil8n_gb.qm
它類似于GNU的msgfmt吩咐。翻譯后的文件可以用Qt程序干脆調(diào)用。
QTranslator*translator=newQTranslatcr(O);
translator->load("il8n_gb.qmH,
qApp->instal!Translator(translator);
此外,Qt還供應(yīng)了類似于msgmerge的工具mergetr,它用于把新提取的信息文件和已經(jīng)翻譯過的信息文件融合起來,
在此不再贅述。
在Qt中也可以干脆運(yùn)用QTextCodec來轉(zhuǎn)換字符串的編碼,這為在Qt下開發(fā)純中文軟件帶來了便利條件,不過這種方
法不符和國際化/本地化的習(xí)慣,
char*string="中文和English混和字符串!”
QTextCodec*gbk_codec=QTextCodec::codecByName("GBK");
QStringgbk_string=codec->toUnicode(string);
QLabel:klabel=newQLabel(gbk_string);
假如使程序只支持一種編碼,也可以干脆把整個(gè)應(yīng)用程序的編碼設(shè)置為GBK編碼,然后在字符串之前加tr(QObject::tr),
qApp->setDefaultCodec(QTextCodec::codecForName("GBK"));
QLabel*label=newQLabel(。("中文標(biāo)簽"));
假如使Qt依據(jù)Locale的環(huán)境變量取得字符集,可以運(yùn)用QString::fromLocal8Bit(str)<.
本節(jié)的例子請參見qt-il8n-example.tar.gz
2.Qt的文本輸入
在輸入方面,Qt的輸入條(QLineEdit)和編輯區(qū)(QMultiLineEdit)都支持XIM,只要協(xié)作相應(yīng)的輸入服務(wù)器,便可以輸入
中文/日文/韓文。目前有很多支持XIM的軟件,比如中文:Chinput/xcin/rfinput/q9,日文:kinput2/skkinput,韓文:
ami/hanIMo
Qt程序的缺省輸入風(fēng)格是Ove仃heSpo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育調(diào)查報(bào)告范文
- 教師個(gè)人工作總結(jié)五篇2022
- 軟程序員辭職報(bào)告模板集錦七篇
- 中醫(yī)兒科學(xué)復(fù)習(xí)試題含答案
- 商品房買賣合同三篇
- 2024年早教機(jī)構(gòu)實(shí)習(xí)教師勞動(dòng)合同3篇
- 2024年版權(quán)許可協(xié)議定制3篇
- 2024年在線教育平臺退費(fèi)退款及課程安排協(xié)議3篇
- 2024年滁州標(biāo)準(zhǔn)場地出租合同模板版B版
- 2024年中心門面房屋租賃及節(jié)假日促銷活動(dòng)合作協(xié)議3篇
- 客訴品質(zhì)異常處理單
- 垃圾焚燒發(fā)電廠消防系統(tǒng)安裝方案
- 露天礦山危險(xiǎn)源辨識與風(fēng)險(xiǎn)評價(jià)
- 履帶吊司機(jī)安全技術(shù)交底
- 班級管理(第3版)教學(xué)課件匯總?cè)纂娮咏贪?完整版)
- 2022年度母嬰護(hù)理師技能試卷題庫
- 玻璃采光頂施工工藝
- 2024年義務(wù)教育國家課程設(shè)置實(shí)施方案
- 某乳業(yè)公司價(jià)格策略研究
- T∕CIAPS 0012-2021 磷酸鐵鋰電池壽命加速循環(huán)試驗(yàn)方法
- 低壓配電柜GGD技術(shù)規(guī)范方案設(shè)計(jì)
評論
0/150
提交評論