[Qt] Qt程序發佈 [2013-09-16更新]

- 一般經驗

Windows篇

1. 當發佈程序缺少插件庫(dll形式)時,程序運行時不會提示“缺少xxx.dll”。

2. 發佈程序在裝有Qt開發環境的PC運行正常,而在沒有裝Qt開發環境的PC運行出現異常有可能是缺少插件庫所致。

3. 發佈程序時,插件庫與非插件庫的處理不同。非插件庫可直接把dll文件拷貝至exe文件所在目錄或Windows系統目錄或環境變量指定的目錄,而插件庫在拷貝時必須保持 Qt/x.x.x/plugins 目錄下各個插件目錄原有的目錄結構,否則程序無法找到該插件庫,從而導致程序運行異常。
例如:ODBC數據庫驅動插件的目錄爲 Qt/x.x.x/plugins/sqldrivers,程序發佈時必需把sqldrivers(可根據實際情況精簡不需要文件)目錄拷貝至exe文件所在目錄才能確保程序正常運行。
在上述例子中,如果希望重新指定sqldrivers目錄的位置,則可使用以下方法指定。
QApplication::addLibraryPath(QString path);
例如:在代碼中添加:QApplication::addLibraryPath(QDir::currentPath() + "/dll"); 意思是把sqldrivers指定到exe所在目錄中的dll目錄下。接着把sqldrivers拷貝到dll目錄下,這樣就實現了把sqldrivers目錄指定到其他的位置。
! 對於非插件庫,暫時找不到方法重新指定其路徑。因此發佈程序時,非插件庫與可執行程序只能放在同一目錄下,也可以把被插件庫的路徑添加到環境變量中。

4. Windows下發布程序中,默認支持的圖片格式:*.png,默認不支持:*jpg。



- 可執行文件圖標設置

1. 將icon文件(假設爲“favicon.ico”)拷貝至工程目錄中(.pro文件所在的目錄)
    支持格式:*.ico
    不支持格式:*.png

2. 在Qt Creator中創建一個擴展名爲“.rc”的文本文件(假設爲“release.rc”),並加入如下內容:
    IDI_ICON1 ICON DISCARDABLE "favicon.ico"

3. 編輯.pro文件
    此時.pro文件應該有:
    OTHER_FILES += \
          release.rc

    在下面添加如下內容:
    RC_FILE = \
          release.rc

4. 重新編譯
    編譯完成後,可執行文件的圖標將變成和“favicon.ico”相同



- 發佈的QT程序無法顯示圖標和圖片的問題 

在windows下編譯好的QT程序在其他沒有安裝QT的機器上會出現圖標和圖片無法正常顯示的問題。

這時我們可以通過以下方式來解決:
在release文件夾裏創建plugins文件夾,並將QT安裝目錄下的plugins\imageformats文件夾複製到release\plugins文件夾(imageformats文件夾包含了許多圖片格式的插件,如jpeg等)。

然後最重要的一步是在main.cpp中添加:QApplication::addLibraryPath("./plugins"); 
編譯程序之後再發布就即可。

! 用上述的方法可以重新指定插件庫的位置




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章