㈠ linux下 QT 的資源編輯器是干什麼用的
編輯資源文件
和大部分GUI框架設計工具一樣,Qt也引入了資源文件系統。用於方便地將一些二進制文件(主要是圖片文件)編譯進可執行程序中,免去再發布應用的時候附帶其他文件的麻煩。
下面為拷貝別人的解釋
Qt的資源文件是以.qrc為後綴名的XML文本格式。在Qt工程中使用資源文件的話,需要在.pro工程文件加入如下代碼
RESOURCES = file.qrc
在工程文件中加入這樣語句後,qmake系統會自動調用RCC(資源文件編譯器)將file.qrc轉化成qrc_file.cpp,最後使用gcc進行正常的編譯。
資源文件的基本格式
來看一個簡單的.qrc例子
<!DOCTYPE RCC><RCC version=」1.0″>
<qresource>
<file>images/.png</file>
<file>images/cut.png</file>
<file>images/new.png</file>
<file>images/open.png</file>
<file>images/paste.png</file>
<file>images/save.png</file>
</qresource>
</RCC>
主要部分<qresource>和</qresource>之間的代碼,其它部分拷貝過來就可以了,這里的」images/」是相對於你資源文件的路徑,和資源文件的格式沒有關系。那麼你可以在你的源代碼中使用QFile訪問它們,在本例子中,因為是圖片文件,那麼你也可以直接用QImage訪問它們,不過前面需要加上前綴」:/」,形式為
QImage(「:/images/.png」);
資源文件的別名
如果你的資源文件比較多,而且放在一個比較深的目錄里,可以通過別名簡化
<file alias=」cut-img.png」>images/cut.png</file>
有了別名後,那麼在.cpp文件中可以用別名進行訪問
QImage(「:/cut-img.png」);
資源文件的國際化
有些資源文件可能根據使用語言的不同,而使用不同的資源文件。也可以通過別名加語言選項來實現,我們看代碼
<qresource>
<file>cut.jpg</file>
</qresource>
<qresource lang=」fr」>
<file alias=」cut.jpg」>cut_fr.jpg</file>
</qresource>
在使用上面資源的.cpp代碼中,根據系統LANG的不同,可以通過同一語句QImage(「:/cut.jpg」)而能夠訪問到不同的資源文件。
㈡ 如何在ubuntu下搭建qt交叉編譯環境
第一步,你需要下載QT源代碼(4.8的編譯比較容易),然後通過 ./configure (參數自己定,不懂看readme)接下來就是在QT CREATE裡面配置了,如下:
工具-->選項--->構建和運行
1. 編譯器: 點擊添加: "名稱"隨意
"編譯器路徑" **/arm-none-linux-gnueabi-g++
找到你的編譯器,我這里是用ARM的
其他不填也行.
2.Qt Versions: 點擊添加:找到通過源碼編譯好的qmake文件. 例如:/usr/local/Qt-4.8.6/bin/qmake
3.構建套件: 點擊添加: "名稱"隨意, 重點是 "編譯器"跟"QT版本", 分別選擇剛剛添加的兩項.
調試器:如果是桌面環境那就選桌面的, 如果是在嵌入式中的,那不要也可以..
如果是交叉編譯,那隻能編譯,不能運行...
㈢ 怎樣交叉編譯一個QT應用程序
?
為此我寫下我在工作中的一點小經驗,希望對曾經像我一樣困惑的新手們有點幫助,同時也希望能得到大家的指正,
首先得把我們在X86機上調好的程序進行交叉編譯,如果在X86上都沒有通過的話。。那就不用交叉編譯了,(肯定是通不過的),還是到正題吧,
設置好環境變數,我們用以用echo
來查看環境變數,echo
$TMAKEPATH
,如果返回的不是.../qws/linux-arm-g++
的字元的話,我們一定得從新設置,
export
TMAKEPATH=/tmake
的安裝路徑/qws/linux-arm-g++
,同時QTDIR一定得要指定QTE的安裝路徑,設置過程如下:
export
QTDIR=...../qt-2.3.7
以上環境設置好後,我們可以使用tmake來生成Makefile,注意這里我們是用tmake,而不是用qmake(注意),tmake工具在tmake包裡面。
具體做法,我們可以在命令行下打:
tmake
-o
Makefile
工程名.pro
這樣我們就新生成了一個Makefile文件,下一步,我們要打開這個文件,做一些小的修改
1:
將LINK=arm-linux-gcc
改為:LINK=arm-linux-g++
2:將LIBS=$(SUBLIBS)
-L$(QTDIR)/lib
-lm
-lqte這句話改為:
LIBS=$(SUBLIBS)
-L/opt/gcc-2.3.2-glibc-3.3.2/lib
-L$(QTDIR)/lib
-lm
-lqte
加上你的交叉編譯的庫。。。最後我們可以make了,一個可以在您的板子上可以運行的二進制文件產生了。
至於怎樣加到qtopia上去呢。。。待續。。。。。。。。。。。。。。
㈣ Qt creator交叉編譯帶圖片的程序出現問題,版本4.7
找不到 libQtGui.so 這個庫, 添加環境變數 LIBRARY_PATH=/opt/Qt4.7/lib 試試
另外你使是用 arm-linux-gcc 編譯程序, 需要保證 QT 下的 libQtGui.so 庫也是用 arm-linux-gcc 編譯的, 否則編譯鏈接會出問題
㈤ qrc_images.cpp是什麼是qt庫自帶的文件嗎
圖片是一種資源,而在Qt中,對於資源的使用是有其獨特的方式的!
①:一般來說:資源在內存中是用資源對象樹來表示的,該樹在程序啟動時創建。
②:而對於資源而言:我們都是需要先將其加入到這棵樹中才能載入到內存中並被程序使用!!
③:而將一個圖片資源放到程序的資源對象樹中是用函數QResource::registerResource()來實現的。亦即:要將資源向這顆資源對象樹進行注冊,這樣才對在系統中new創建這個資「葉子」。
Qt中經常會使用一些圖片作為程序的界面,經常用的有三種方法,這里借鑒了小竇朋友的方法總結
1、在程序運行時候載入圖片,
也是最簡單的方法
image=new QImage("1.png");
這種方法在程序運行時候再去載入圖片,需要在程序的運行目錄下添加事先放置好圖片,這樣做的優點是程序運行時候不需要的圖片不載入,節省了內存,但是讀取速度慢。
2、將圖片編譯進工程中,
這樣在程序發布時候不需要在目錄下放置圖片,主要通過的是.qrc文件,例如添加image.qrc文件,這個文件會在編譯時候生成qrc_image.cpp文件,,我們可以自己看下這個生成的cpp文件,發現其中就是主要有三個static const數組。
qt_resource_data[]
qt_resource_name[]
qt_resource_struct[]
這其中qt_resource_data[]中存放的就是圖片的二進制數據。而後邊的兩個數組我們猜測是做了一個圖片名字到上邊數據的映射,方便系統找到data中的二進制數據。
至於內部作用機制,有的資料上說是:當使用qrc資源文件時:系統會自動將所有的圖片資源都向程序的資源對象樹進行注冊,並且當程序結束運行時再進行反注冊。這也正好解釋了為什麼此種方法下圖片資源會一直佔用內存的原因。
使用這種方法時:由於圖片資源一直在內存中,避免了I/O操作,從而加快了讀取速度。但是卻是以消耗內存為代價的
方法如下:
在qrc文件中加上下面的代碼。
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>1.png</file>
<file>2.ico</file>
</qresource>
</RCC>
然後再.pro文件中添加下面的代碼
RESOURCES = res.qrc
在程序中使用圖片文件時候,通過
:1.png的方法來使用
例如
image=new QImage(":1.png");
3、手動進行注冊
第二種方法相當於靜態載入,但很多情況下我們更希望是動態載入,亦即:用到哪個資源才將該資源載入進來,而不用的則不載入。
上邊第二種方法之所以顯示出靜態載入的特性,這是由於系統一次性自動把所有圖片資源都進行了注冊,並且在程序運行過程中一直沒有進行反注冊才導致的。 如果我們可以自行決定:什麼時候對那一部分圖片資源進行注冊?什麼時候對哪一部分圖片資源進行反注冊。則顯然我們可以手動控制整個資源在內存中的生存周期!!
這種方法的主要步驟為:
①:生成外部二進制資源文件。
②:在需要時將該資源向程序的資源對象樹進行注冊並使用。
③:在不需要時進行反注冊。
步驟①主要是用了Qt自帶的一個工具:rcc.exe (處於bin文件夾中)。這是Qt的一個資源編譯器,其編譯對象是qrc文件,而生成rcc二進制資源文件。
那我們可以用它來執行命令 rcc -binary name.qrc -o name.rcc 來把qrc資源文件轉成rcc二進制資源文件。
而後在程序內部:當需要使用某一圖片資源時:則直接調用
QResource::registerResource(「name.rcc」)進行注冊創建分配內存即可! 而不使用時候則調用反注冊函數!!
這種方式算是動態載入,會少佔用內存。但是如果圖片過多的話,什麼時候需要載入,什麼時候需要去掉,這些邏輯就需要十分注意了。
㈥ 配置qt交叉編譯安裝,總是提示arm-linux-g++:沒有那個文件或目錄
配置qt交叉編譯安裝,總是提示arm-linux-g++:沒有那個文件或目錄問題解決方法:
以Ubuntu系統為例,我自己安裝的是arm-linux-gnueabi-gcc和arm-linux-gnueabi-g++,所以到了編譯指令make後,出現以上錯誤。
經過多方查找資料,在http://bbs.csdn.net/topics/390630552?page=1找到:
知道需要去解壓後文件路徑的mkspecs/qws/linux-arm-g++中修改文件qmake.conf,把裡面定義的編譯器名稱改成電腦中已安裝的版本,如:
重新配置
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm -lrt -little-endian
接著指令:make
ok了。解決了問題。