Qt on Android:qrc與assets

來源:互聯網
上載者:User

標籤:android   qt   qt for android   qt on android   

    使用 Qt 為 Android 開發應用時,有時我們的應用會攜帶一些資源檔,如 png 、 jpg 等,也可能有一些設定檔,如 xml 等,這些檔案放在哪裡呢?

    有兩種方式:

  1. qrc
  2. assets

    咱們分別來看下。

the Qt Resource System

    qrc , Qt 的資源檔系統,很好用哦。看個圖:


                           圖1 qrc

    你放在 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 虛擬檔案系統,你的資源檔不會在程式啟動時就載入到記憶體,比較節省資源。

    看一個圖:


                           圖2 assets    

    那資源檔怎麼放呢?很簡單,就是放在 Qt 項目目錄下的 android/assets 檔案夾內即可。3:


                   圖3 使用 assets 的目錄結構

    只要你這麼一放, Qt 編譯時間就會把 assets 內的檔案打包到 APK ,然後就可以在 C++ 代碼內訪問了。

使用 assets 的 Android 樣本

    參考《Qt on Android:圖文詳解Hello World全過程》建立一個針對 Android 的項目。

    建立 AndroidManifest.xml ,然後在 android/assets 目錄下放一個 beauty.jpg 。刪除項目的 widget.h 和 widget.cpp 。修改 main.cpp ,如下:

#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();}

    編譯,運行,可以看到圖 4 :


                  圖 4 使用 assets 的 Qt on Android 樣本


    OK,到此結束。

    回顧一下 Qt on Android 系列:

  • Qt on Android:圖文詳解Hello World全過程
  • Windows下Qt 5.2 for Android開發入門
  • Qt for Android 部署流程分析
  • Qt on Android:將Qt調試資訊輸出到logcat中
  • Qt on Android: Qt 5.3.0 發布,針對 Android 改進說明
  • Qt on Android Episode 1(翻譯)
  • Qt on Android Episode 2(翻譯)
  • Qt on Android Episode 3(翻譯)
  • Qt on Android Episode 4(翻譯)
  • Qt for Android 編譯純C工程
  • Windows下Qt for Android 編譯安卓C語言可執行程式
  • Qt on Android: Android SDK安裝
  • Qt on Android: http下載與Json解析
  • Qt on Android 之設定應用程式名稱為中文
  • Qt on Android:讓 Qt Widgets 和 Qt Quick 應用全螢幕顯示
  • Qt on Android:怎樣適應不同的螢幕尺寸
  •  Qt on Android:使用JNI與第三方jar包
  • 《Qt on Android核心編程》介紹
  • Qt on Android:qrc與assets

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.