讓Qt for Windows Phone 8.1在真機上運行

來源:互聯網
上載者:User

標籤:qt   行動裝置 App開發   windows phone 8   

讓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程式很容易罷工。如果qtd3dservice程式一直顯示qt.d3dservice:Unable to get remote directory info: "?????",那麼可能是上面的步驟出錯了,或者是其它未知的錯誤。總之,刪除構建的目錄,從第四步開始重新來一遍吧。

總結

         Qt的Windows Phone套件還不完善,主要體現在兩點:1、線上編譯shader需要qtd3dservice,給我們開發增加了麻煩,測試回合的時候一定要運行該程式,還容易罷工。對此計劃在Qt 5.4中去除該程式;2、不能完全脫離Visual Studio進行開發,雖然Qt Creator可以直接運行程式,但是不是無法顯示介面(缺少qtd3dservice運行)就是字型顯示方塊。字型顯示方塊這個問題源自於winrtrunner這個程式預設定義需要打包的程式尾碼沒有.ttf,並且Qt Creator無法為Windows Phone套件產生一個map檔案。為此我在jira上提出了bug,希望他們能在下一個版本中解決問題。

實拍運行:



讓Qt for Windows Phone 8.1在真機上運行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.