设为首页 加入收藏

TOP

让Qt for Windows Phone 8.1在真机上运行
2015-07-20 17:47:12 来源: 作者: 【 】 浏览:3
Tags: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 
  
   
#include 
   
     #include 
    
      #include 
     
       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,希望他们能在下一个版本中解决问题。

实拍运行:

\

\

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++11 智能指针unique_ptr使用 --.. 下一篇C++设计模式之状态模式(四)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)