Qt GUI API中使用Unicode類型的字符串類QString。使用Unicode的好處是可以支持更多的地區(qū)語言,ASCII是Uncode的子集。
QByteArray和QString的方法和屬性相似,可以參考QString。另外有一些與QByteArray相關(guān)的非成員函數(shù):
QByteArray與QString之間的轉(zhuǎn)換:
示例:
QByteArray cstr("abcd");
QString s = cstr;
QByteArray cstr("abcd");
QString s;
s.prepend(cstr);
QString s("hello");
QByteArray cstr = s.toAscii();
QString s("hello");
QByteArray cstr = s.toLatin1();
QByteArray類同樣不以'\0'為結(jié)尾:如
Step 1:
首先設(shè)置宿主機(jī)上的環(huán)境變量(依你自己的情況而定):
export QTDIR=/usr/local/arm-linux/qt_toolchain/qt-2.3.7
export QPEDIR=/usr/local/arm-linux/qt_toolchain/qtopia-free-1.7.0
export LD_LIBRARY_PATH=/usr/local/arm-linux/qt_toolchain/qt-2.3.7/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/arm-linux/qt_toolchain/qt-2.3.2/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/usr/local/arm-linux/qt_toolchain/tmake-1.11
export TMAKEPATH=/usr/local/arm-linux/qt_toolchain/tmake-1.11/lib/qws/linux-arm-g++
export PATH=/usr/local/arm-linux/qt_toolchain/tmake-1.11/bin:$PATH
Step 2:
利用designer來設(shè)計(jì)界面,生成okform.ui;(注意:如果用qt-3.3的designer來設(shè)計(jì)界面,則以下步驟生成的okform.cpp和okform.h需要修改)
Step 3:
由okform.ui生成okform.h和okform.cpp:
#uic -o okform.h okform.ui
#uic -o okform.cpp -impl okform.h okform.ui
Step 4:
為工程編寫一個(gè)主程序:
#include <qapplication.h>
#include "okform.h"
int main(int argc ,char **argv)
{
QApplication a(argc,argv);
okForm ok;
a.setMainWidget(&ok);
ok.show();
return a.exec();
}
Step 5:
修改tmake配置文件,以生成合適的Makefile:(只要第一次改好即可,不需每次都改)
在$TMAKEDIR/lib/qws/linux-arm-g++/tmake.conf文件里需要修改的地方如下:
TMAKE_LINK = arm-linux-g++
TMAKE_LINK_SHLIB = arm-linux-g++
TMAKE_LIBS_QT = -lqpe -lts
Step 6:
移除okform.ui這個(gè)文件,然后利用qmake 生成project文件:
#qmake -project
這樣便生成了qt_test.pro(由當(dāng)前目錄名決定工程的名稱)
也可以通過以下命令來生成:
#progen -t app.t -o qt_test.pro
Step 7:
用tmake來生成Makefile
#tmake -o Makefile qt_test.pro
Step 8:
#make
到此就生成了arm平臺上的Qt 程序,通過NFS或其他手段拷貝到開發(fā)板上運(yùn)行即可.
1.Linux鏈接概念
Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認(rèn)情況下,ln命令產(chǎn)生硬鏈接。
【硬連接】
硬連接指通過索引節(jié)點(diǎn)來進(jìn)行連接。在Linux的文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個(gè)編號,稱為索 引節(jié)點(diǎn)號(Inode Index)。在Linux中,多個(gè)文件名指向同一索引節(jié)點(diǎn)是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個(gè)文件擁有多個(gè)有效路徑名,這樣用戶 就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因?yàn)閷?yīng)該目錄的索引節(jié)點(diǎn)有一個(gè)以上的連接。只刪除一個(gè)連接并不影響索引節(jié)點(diǎn)本身和 其它的連接,只有當(dāng)最后一個(gè)連接被刪除后,文件的數(shù)據(jù)塊及目錄的連接才會被釋放。也就是說,文件真正刪除的條件是與之相關(guān)的所有硬連接文件均被刪除。
【軟連接】
另外一種連接稱之為符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似于Windows的快捷方式。它實(shí)際上是一個(gè)特殊的文件。在符號連接中,文件實(shí)際上是一個(gè)文本文件,其中包含的有另一文件的位置信息。
2.通過實(shí)驗(yàn)加深理解
[oracle@Linux]$ touch f1 #創(chuàng)建一個(gè)測試文件f1
[oracle@Linux]$ ln f1 f2 #創(chuàng)建f1的一個(gè)硬連接文件f2
[oracle@Linux]$ ln -s f1 f3 #創(chuàng)建f1的一個(gè)符號連接文件f3
[oracle@Linux]$ ls -li # -i參數(shù)顯示文件的inode節(jié)點(diǎn)信息
total 0
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1
從上面的結(jié)果中可以看出,硬連接文件f2與原文件f1的inode節(jié)點(diǎn)相同,均為9797648,然而符號連接文件的inode節(jié)點(diǎn)不同。
[oracle@Linux]$ echo "I am f1 file" >>f1
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory
通過上面的測試可以看出:當(dāng)刪除原始文件f1后,硬連接f2不受影響,但是符號連接f1文件無效
3.總結(jié)
依此您可以做一些相關(guān)的測試,可以得到以下全部結(jié)論:
1).刪除符號連接f3,對f1,f2無影響;
2).刪除硬連接f2,對f1,f3也無影響;
3).刪除原文件f1,對硬連接f2沒有影響,導(dǎo)致符號連接f3失效;
4).同時(shí)刪除原文件f1,硬連接f2,整個(gè)文件會真正的被刪除。
在qte3以前,還分qmake和tmake,它們都是用來生成makefile的,它們的區(qū)別是:
qmake一般用于生成本地makefile。
例如:hello目錄下有main.cpp hello.cpp hello.h
cd hello
qmake -project // 將生成hello.pro
qmake hello.pro -o makefile // 將生成makefile
tmake既可用于生成本地的makefile,也可用于生成用于交叉編譯的makefile,區(qū)別在于設(shè)置TMAKEPATH路徑的不同,一個(gè)用于x86,一個(gè)用于arm或別的處理器。
例如:hello目錄下有main.cpp hello.cpp hello.h
export TMAKE=...../tmake-*.** // tmake的安裝目錄
export PATH=$TMAKE/bin:$PATH
export TMAKEPATH=$TMAKE/lib/qws/linux-arm-g++
cd hello
qmake -project // 將生成hello.pro
tmake hellp.pro -o makefile // 將生成交叉編譯的makefile
如果export TMAKEPATH=$TMAKE/lib/qws/linux-x86-g++
tmake hellp.pro -o makefile // 將生成本地的makefile
但是好像在qte3之后,qmake也可以生成交叉編譯的makefile了,我裝qte4的時(shí)候,弄了兩個(gè)版本,一個(gè)x86,一個(gè)是arm的,里面對應(yīng) 的qmake也就是一個(gè)對應(yīng)x86,一個(gè)對應(yīng)arm,要生成makefile的時(shí)候,只要到對應(yīng)的文件夾下用對應(yīng)的qmake就行了,連環(huán)境變量都不用 設(shè)。
、//////////////////////////////////////////////////////////////////////////////////////////////
網(wǎng)上摘抄,特此說明!!!
Qt Designer — 所見即所得的界面設(shè)計(jì)工具, 可以用拖拽的方式將控件排布在界面上,支持layout, 支持signal/slot編輯。 生成的文件保存為ui格式, ui是xml格式的普通文本文件, 默認(rèn)編碼為utf8, 所以界面上還可以直接寫中文(但是不推薦這么做哦,還是應(yīng)該用標(biāo)準(zhǔn)的Qt國際化的方法來翻譯界面。).
Qt Assistant — 類似MSDN的文檔查看工具, 支持html的子集(圖片、超鏈、文本著色), 支持目錄結(jié)構(gòu)、關(guān)鍵字索引和全文搜索, 可以很方便的查找Qt的API幫助文檔,所以是編程必備、使用率最高的工具。
qmake – 用于生成Makefile(編譯的規(guī)則和命令行)的命令行工具。 它是Qt跨平臺編譯系統(tǒng)的基礎(chǔ)。 它的主要特點(diǎn)是可以讀取Qt本身的配置, 為程序生成與庫一致的Makefile。
Qt Linguist — 被稱為Qt語言家的Linguist是用于界面國際化的重要工具, 但其實(shí)它并不能幫你翻譯,它的主要任務(wù)只是讀取翻譯文件、為翻譯人員提供友好的翻譯界面。 聽起來這個(gè)功能好像不太夠, 沒錯(cuò)! Linguist必須要和其他工具一起用才能完成Qt國際化。 關(guān)于國際化可以參考bug寫的Qt國際化和本地化。 另外,大家可能還不知道, Linguist工具從4.5開始可以支持Gettext的PO文件格式了哦~
tmake – 和qmake功能一致,是qmake的前身。從Qt3開始tmake全面被qmake替代。
qtdemo – Qt例子和演示程序的加載器, 也可以看作是Qt提供的一個(gè)有用的工具。 有了這個(gè)工具, 用戶可以很方便的查看Qt提供的多姿多彩的例子程序,從中選擇自己需要的, 不僅可以看到程序運(yùn)行的情況,還可以查看源碼和文檔。
lupdate – Qt國際化的重要命令行工具之一, 它的功能是從源碼文件或其他資源文件中提取需要翻譯的字符串,并將之用正確的編碼和格式存入ts文件中。 這個(gè)ts文件是xml格式的普通文本文件, 但不建議用普通的文本編輯工具來編輯, 最好的方法是用Linguist來處理這個(gè)文件。
lrelease – Qt國際化的重要命令行工具之一, 它負(fù)責(zé)將ts文件轉(zhuǎn)化為程序使用的qm文件。 轉(zhuǎn)化過程最大的變化是去掉了原始文件中所有的空白和未翻譯的內(nèi)容, 并將存儲格式壓縮, 所以qm文件是保留所有有效信息但占用硬盤最少的格式。
uic – UI Compiler, 顧名思義,這個(gè)命令行工具是用來編譯ui文件的, 它能把ui文件轉(zhuǎn)化為編譯器可以識別的標(biāo)準(zhǔn)C++文件, 生成的文件是一個(gè).h。 這個(gè)工具通常情況下不需要用戶去手動調(diào)用, qmake會幫你管理ui文件和調(diào)用uic工具。 具體的可以參考筆者的另外一篇帖子 Qt4中ui文件的使用方法。
moc – Meta Object Compiler, 直譯過來是元對象編譯器, 簡單的說這是個(gè)預(yù)編譯工具, 用來生成一些與信號和槽相關(guān)的底層代碼。 該工具處理帶有Q_OBJECT宏的頭文件, 生成形如moc_xxx.h, moc_xxx.cpp的C++代碼,之后再與程序的代碼一同編譯。 同樣,這個(gè)命令行工具也不需要用戶手動調(diào)用, qmake會在適當(dāng)?shù)臅r(shí)候調(diào)用這個(gè)工具的。
后面的題目越來越難了哦~~
rcc – Resource Compiler資源文件編譯工具。 Qt的資源系統(tǒng)是自己一套特別的設(shè)計(jì), 工程中可以包含后綴為qrc的資源文件, 由rcc工具根據(jù)qrc的內(nèi)容將相關(guān)的文件編譯為二進(jìn)制,并與源碼編譯在一起,保存在應(yīng)用程序的二進(jìn)制文件中。 這個(gè)命令行工具同樣不需要手動調(diào)用,由qmake調(diào)用。
qconfig – QtEmbedded feature配置工具。 眾所周知,嵌入式版本的Qt可以自己定義一個(gè)feature定義文件叫qconfig-xxx.h,里面定義一些預(yù)定義的宏, 通過這個(gè)文件可以在編譯階段去掉一些feature, 以減少Q(mào)t庫的footprint。 這個(gè)qconfig工具就是用來編輯feature定義文件的。 具體的參考筆者的帖子簡單Qt裁剪。
qt3to4 – 用于Qt3程序升級為Qt4程序的移植工具。 它的原理是根據(jù)xml文件里定義的一系列文本替換的規(guī)則去做文本替換, 所以…怎么說呢,這個(gè)工具的功能比較有限, 不可避免的需要很多人工干預(yù)才能解決編譯和運(yùn)行的錯(cuò)誤。 故而筆者的建議還是重頭寫程序比較靠譜。
qvfb – 一般做嵌入式開發(fā)的用戶對這個(gè)工具應(yīng)該不陌生。 這是個(gè)有幾分神奇色彩的模擬器, 它可以模擬framebuffer設(shè)備(尺寸、色深),還可以通過skin文件模擬硬件鍵盤的布局(包括特殊鍵值的按鍵), 是在x86環(huán)境下調(diào)試嵌入式程序必不可少的有效工具。 無怪乎minigui也比較無恥的偷竊了這個(gè)工具…實(shí)在是誘惑力太大了
qtconfig – X11系統(tǒng)下用于配置Qt環(huán)境的工具。 可以設(shè)定字體、Style、Palette、打印機(jī)等。 設(shè)定信息會保存在用戶家目錄,所以可以按不同用戶的喜好來設(shè)定不同的值。
qcop – 嵌入式環(huán)境qtopia帶的進(jìn)程間通訊的工具, 用于進(jìn)程間的通訊和進(jìn)程間API的相互調(diào)用。
pixeltool – 類似放大鏡的工具,可以看清鼠標(biāo)滑過的每個(gè)像素。
findtr – 從源碼提出翻譯字串,保存為Linux的po格式。 po是Linux系統(tǒng)下國際化方法gettext使用的標(biāo)準(zhǔn)格式, 所以這個(gè)工具是為了和Linux本身的國際化方法兼容而提供的。
uic3 – Qt4中提供的處理Qt3 ui文件的工具,生成的代碼是Qt4的代碼,可以放在Qt4的工程里使用。 值得注意的是,uic3生成的代碼有一部分會使用Qt3Support庫的API, 不是純的Qt4代碼。
phonesim – Qtopia里帶的奇妙工具, 用于調(diào)試手機(jī)環(huán)境。 可以模擬提供AT命令接口的modem設(shè)備。 有了這個(gè)工具就可以在桌面環(huán)境下調(diào)試應(yīng)用和modem之間的交互邏輯, 簡單的說Qtopia里像接打電話、收發(fā)短信、STK程序等功能都是靠這個(gè)工具來調(diào)試的。
makeqpf – Qt為了嵌入式環(huán)境的需要自創(chuàng)了一種字體格式叫qpf, 這個(gè)格式是個(gè)位圖字體, 它把已經(jīng)預(yù)渲染的文字直接保存成二進(jìn)制內(nèi)容, 使用的時(shí)候可以用內(nèi)存映射加載, 從加載到繪制的過程不需要計(jì)算,所以速度非???。 makeqpf工具就是用來創(chuàng)建qpf格式的字體的,它可以讀取系統(tǒng)中的字體格式, 根據(jù)用戶的設(shè)定生成特定字號規(guī)格的qpf文件供用戶使用。
這些工具我也不熟。。就不多說了。。
lconvert – 4.5版本新引入的工具, 用于翻譯文件之間的格式轉(zhuǎn)換, 將ts格式轉(zhuǎn)換為其他工具可讀取的XLIFF格式。
qdbusxml2cpp – QtDBus XML編譯器, 用于將xml格式的DBus遠(yuǎn)程調(diào)用的對象和函數(shù)API的描述文件翻譯為C++代碼。 這個(gè)工具創(chuàng)建的是個(gè)代碼的框架,里面的API具體實(shí)現(xiàn)要用戶自己來填充。
D-Bus Viewer — 可以用來查看D-Bus對象及其對外提供的API, 可以通過雙擊API的方式調(diào)用某個(gè)方法, 還可以注冊信號, 這樣所有發(fā)出的信號都會顯示在窗體中。
IDC – ActiveQt模塊提供的命令行工具,用于將Qt二進(jìn)制轉(zhuǎn)化為COM server。 該工具由qmake調(diào)用,不需要手工執(zhí)行。
dumpcpp – ActiveQt模塊的命令行工具, 可以為一個(gè)類型庫創(chuàng)建C++的命名空間。
dumpdoc – ActiveQt模塊的命令行工具,可以為COM對象創(chuàng)建Qt風(fēng)格的文檔。
testcon – ActiveQt模塊的命令行工具, 全稱為ActiveX Test Container, 也就是可以作為ActiveX控件的容器, 這樣可以把控件安裝到系統(tǒng)中再測試。 該工具會提供詳細(xì)的事件和屬性變化的log信息。
Qt Script Debugger — 用于調(diào)試Qt Script的工具,可以單步運(yùn)行,查看輸出等。 Qt文檔里有很詳細(xì)的一篇專門講這個(gè)的,有興趣的來看下: Qt Script Debugger Manual
安裝 libX11-dev libXext-dev libXtst-dev
于是
yum install libXau-devel
接著執(zhí)行
rpm -ivh libXext-devel-1.0.4-1.fc9.i386.rpm
最后,./configura果然,錯(cuò)誤解決了。
最后我們來總結(jié)一下,要解決這個(gè)問題只需要幾個(gè)庫就可以了呢,
實(shí)際上只要兩個(gè):
yum install libXau-devel
執(zhí)行完上面這條語句后,我在執(zhí)行
yum install ibX11-devel
打印信息顯示,該package已經(jīng)安裝
最后在安裝
libXext-devel就可以了