发布Qt Quick桌面应用程序的方法(使得planets在XP上运行)

发布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

上一篇:Qt Quick程序的发布


下一篇:Qt Quick 与 QML语言(初学笔记1)