標籤:style blog http io color ar 使用 sp for
讓Qt for Windows Phone 8.1在真機上執行
前面幾篇博文是為這篇文章做鋪墊的,終於目的為的是使用Qt架構製作出可以在Windows Phone 8.1真機上執行的程式。因為Qt for WP8這一塊不完好,在加上我剛進入這一領域,所以研究的速度有點兒慢。在網上詢問了Qt項目的維護者,加上自己的一點研究,略微瞭解了Qt for Windows Phone 8的開發原理。
原創文章,反對未聲明的引用。原部落格地址:http://blog.csdn.net/gamesdev/article/details/38967749
使用Qt開發Windows Phone 8應用而且可以執行在真機上,在前一篇文章的基礎上,須要注冊開發人員帳號,而且解鎖手機,這樣才幹順利地進行開發。
這裡須要配合的軟體是QtSDK for Windows RunTime、Qt Creator3.1.2(綁定在Qt for Windows RunTime中)以及Visual Studio 2012以上版本號碼(含)。
讓Widgets程式在Windows Phone 8.1真機上執行
我們先從簡單的Widgets程式開始講起。開啟QtCreator,建立一個Widgets程式。然後在main函數中輸入這些代碼:
#include <QApplication>#include <QWidget>#include <QLabel>#include <QBoxLayout>int main( int argc, char** argv ){ QApplication app( argc, argv ); QLabel* pLabel = new QLabel( QObject::tr( "Hello Windows Phone 8" ) ); QHBoxLayout* pHLayout = new QHBoxLayout; pHLayout->addStretch( ); pHLayout->addWidget( pLabel ); pHLayout->addStretch( ); QVBoxLayout* pVLayout = new QVBoxLayout; pVLayout->addLayout( pHLayout ); QWidget widget; widget.setStyleSheet( "background-color: #FF0000FF" ); widget.setLayout( pVLayout ); widget.showFullScreen( ); return app.exec( );}
使用案頭套件,執行,是這種結果:
好。接下來介紹如何移植到Windows Phone 8.1平台上。選擇套件為Windows Phone 8,然後在“構建”這一欄加入自己定義的構建步驟,例如以。
當中命令是qmake,參數是-tp vc%{sourceDir}/%{CurrentProject:Name}.pro "CONFIG+=windeployqt",工作資料夾是%{buildDir},目的是產生VisualStudio項目,讓VS繼續構建。
然後在%{buildDir}中找到vcxproj檔案,用VisualStudio開啟。選擇deploy將其部署在手機上,然後從手機上執行,就大功告成了。就這麼簡單。
讓Quick程式在真機上執行
接下來介紹一下QtQuick程式怎樣在Windows Phone 8.1真機上執行。
1、相同地,建立一個Qt Quick項目:
我們先用案頭套件執行一下,是這種效果:
2、(可選)在pro檔案裡設定字型。
QtCreator在預設不設定字型FONTS的情況下,會將全部的字型打包在xap檔案裡,這種話,xap包檔案至少有10M了,降低不必要的字型,能夠將包大小降低到8M左右。我這裡是這樣設定FONTS的:
FONTS=$$[QT_INSTALL_BINS]/fonts/DejaVuSans.ttf
我們能夠在$$[QT_INSTALL_BINS]/fonts中找到全部可用的字型,當然你能夠加入你喜歡的字型,假設不設定的話,這些字型都會被打包。所以設定FONTS為一個有效字型就好了,但假設設定FONTS=,就會造成無字型可用,執行的程式會出現一個個方塊。
3、為項目加入自己定義處理步驟。
這裡方法和構建Widgets程式的一樣。
4、構建。
在%{buildDir}中找到vcxproj檔案,用Visual Studio開啟。
5、用Visual Studio構建。
然後開啟$${QTDIR}/bin/qtd3dservice程式,它會使用線上編譯著色器。藉著部署(deploy),記住部署步驟一定要在開啟qtd3dservice程式之後。
6、執行
如今程式已經在手機上了,這時不要關閉qtd3dservice,執行程式,就能夠看到結果了。
qtd3dservice程式非常easy罷工。假設qtd3dservice程式一直顯示qt.d3dservice:Unable to get remote directory info: "?????",那麼可能是上面的步驟出錯了,或者是其他未知的錯誤。總之,刪除構建的檔案夾,從第四步開始又一次來一遍吧。
總結
Qt的Windows Phone套件還不完好,主要體如今兩點:1、線上編譯shader須要qtd3dservice,給我們開發添加了麻煩,測試執行的時候一定要執行該程式,還easy罷工。對此計劃在Qt 5.4中去除該程式;2、不能全然脫離Visual Studio進行開發,儘管Qt Creator能夠直接執行程式,可是不是無法顯示介面(缺少qtd3dservice執行)就是字型顯示方塊。字型顯示方塊這個問題源自於winrtrunner這個程式預設定義須要打包的程式尾碼沒有.ttf,而且Qt Creator無法為Windows Phone套件產生一個map檔案。為此我在jira上提出了bug,希望他們能在下一個版本號碼中解決這個問題。
實拍執行:
讓Qt for Windows Phone 8.1在真機上執行