標籤:fancybox nbsp 開發 簡單 gre image clu tab 設定檔
使用 Qt 為 Android 開發應用時,有時我們的應用會攜帶一些資源檔,如 png 、 jpg 等,也可能有一些設定檔,如 xml 等,這些檔案放在哪裡呢?有兩種方式:qrc和assets,咱們分別來看下。
Qt Resource System
qrc , Qt 的資源檔系統,很好用哦。看個圖:
你放在 qrc 裡的檔案,如 copy.png ,會被編譯到 exe 檔案中(Android應用是 libapplication.so )。當你運行應用時,這些資源也會被載入到記憶體。如果你的資源很大,這是個問題。如果是在 Android 平台上,你還有另外一個選擇。
Android 的 assets
Android 項目目錄中有一個 assets 目錄,該目錄內放置的檔案會原封不動打包到 APK 中,APK 在 Android 系統安裝時, assets 不會被安裝到應用目錄下,注意,它還在 APK 裡哦,但是應用可以訪問這個檔案夾內的資源! Qt 利用了這種機制,實現了 assets 虛擬檔案系統,我們常見的 QFile 、 QPixmap 、 QImage 等,都可以通過 “assets:/“ 的方式來訪問 assets 內的檔案。 使用 assets 虛擬檔案系統,你的資源檔不會在程式啟動時就載入到記憶體,比較節省資源。
那資源檔怎麼放呢?很簡單,就是放在 Qt 項目目錄下的 android/assets 檔案夾內即可。
只要你這麼一放, Qt 編譯時間就會把 assets 內的檔案打包到 APK ,然後就可以在 C++ 代碼內訪問了。
使用 assets 的 Android 樣本
建立一個針對 Android 的項目。 建立 AndroidManifest.xml ,然後在 android/assets 目錄下放一個 beauty.jpg 。刪除項目的 widget.h 和 widget.cpp 。修改 main.cpp ,如下:
12345678910111213 |
#include <QApplication>#include <QLabel>#include <QPixmap> int main(int argc, char *argv[]){ QApplication a(argc, argv); QLabel label; QPixmap pixmap("assets:/beauty.jpg"); label.setPixmap(pixmap); label.show(); return a.exec();} |
編譯,運行,可以看到 :
OK,到此結束。
https://greedysky.github.io/2016/04/03/Qt%20on%20Android%20%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9Fqrc%E4%B8%8Eassets/
Qt on Android 資源檔系統qrc與assets