天天看點

釋出Qt Quick桌面應用程式的方法(使得planets在XP上運作)釋出Qt Quick桌面應用程式的方法

釋出Qt Quick桌面應用程式的方法

Qt是一款優秀的跨平台開發架構,它可以在桌面、移動平台以及嵌入式平台上運作。目前Qt 5介紹程式釋出的文章文章比較少。大家又非常想要知道如何釋出Qt應用程式,于是我花了一點兒時間介紹一下如何釋出Qt桌面應用程式。

上海萌夢資訊科技有限公司(微網誌:http://weibo.com/qtdream)原創文章,首發位址:http://qtdream.com/topic/114。歡迎同行前來探讨。

上篇文章介紹了如何簡單快速地釋出Qt Widgets應用。目前Qt Widgets是Qt 4的技術,那麼到了Qt 5了,官方當然是大力推廣Qt Quick了,是以我們發現有不少人想要了解Qt Quick是如何釋出應用程式的,而釋出Qt Quick程式,仍然有很多值得注意的地方,否則大家很容易陷進坑裡,是以這篇文章的目的就是幫助大家解決釋出Qt Quick應用遇到的問題。

1、建立一個Qt Quick項目,這裡我們将項目的名稱命名為TestQtQuickApp:

2、其它的就沒有設定了,大體相同。最後呢,這個程式在Qt Creator上順利地運作了,運作結果如下:

3、好了,如果我要釋出Hello World這個程式,那麼有沒有什麼好的辦法呢?有。和Widgets程式一樣,我們隻需要在Qt Creator中設定一下參數就好了:

點選右下角的小三角,這樣在部署的過程中,就順利地将Qt以及QML的依賴項複制過來了。這回我們在Windows XP上嘗試一下,結果出人意料,出現了這樣的對話框:

這個對話框出現的原因可能是msvcrt.dll在XP這個版本沒有vsprintf_s這樣的動态庫。目前還暫時沒有找到好的解決思路,稍後我再單獨研究一下,看這個事情該如何解決。

不過即使出現了這樣的對話框,也不礙事。我們的hello world程式依然能夠打得開:

這裡要特别注意的是,即使按照windeployqt這樣的方法添加Qt Quick程式的依賴項,我們發現,在目标系統上,輕按兩下依然無法顯示界面。這是什麼原因呢?原來,windeployqt做的僅僅是“表面”工夫,由于Qt各個子產品依賴的複雜性,windeployqt并沒有包含進來。比如說你的Qt Quick程式原來的是Local Storage子產品,它可能隻将Local Storage的依賴複制過來了,其實,Local Storage依賴的是Qt5Sql.dll,這個卻沒有引入。是以才會導緻一些子產品無法運作,這也是為什麼很多人按照上述方法部署程式卻依然無法順利運作程式的原因。一個比較好的解決辦法就是,哪怕你的程式大部分都是用QML語言編寫的,在main.cpp中,添加類似#include <QtSql>這樣依賴,pro檔案中添加QT += sql這樣的依賴,這樣可以順利地将Qt5的應用程式部署到客戶機器上。

下面就是我将Qt 5.5最有名的一個例子程式planets部署到客戶2006年購置的Windows XP機器上。看看效果吧。

圖一:Windows 10效果

圖二:客戶Windows XP上效果

http://blog.csdn.net/gamesdev/article/details/50449856