发布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桌面应用程序的方法(使得planets在XP上运行)的更多相关文章

  1. 发布Qt Quick桌面应用程序的方法

    这个对话框出现的原因可能是msvcrt.dll在XP这个版本没有vsprintf_s这样的动态库.目前还暂时没有找到好的解决思路,稍后我再单独研究一下,看这个事情该如何解决. 解决办法有很多,我没有一 ...

  2. 发布Qt Widgets桌面应用程序的方法(自定义进程步骤,用QT Creator直接生成)

    发布Qt Widgets桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序 ...

  3. 发布Qt Widgets桌面应用程序的方法

    Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序,于是我花了一点儿时间介绍一下如何发布Qt桌 ...

  4. 公布Qt Widgets桌面应用程序的方法

    公布Qt Widgets桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它能够在桌面.移动平台以及嵌入式平台上执行.眼下Qt 5介绍程序公布的文章帖子比較少.大家又很想要知道怎样公布Qt应用程序, ...

  5. 编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行

    今天主要来说说怎么在Hadoop2.2.0分布式上面运行写好的 Mapreduce 程序. 可以在eclipse写好程序,export或用fatjar打包成jar文件. 先给出这个程序所依赖的Mave ...

  6. 【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”

    原文网址:http://www.cnblogs.com/Dageking/archive/2013/05/15/3079394.html VS2012编译出来的程序,在XP上运行,出现“.exe 不是 ...

  7. vs2012+ winform+.net4.0发布如何在xp上运行

    今天在英文版vs2013打包发布4.0(非4.0 client)的winform时,遇到了在xp上无法运行的情况,.net framework 4.0在xp上已安装.在打包前,winform工程,即菜 ...

  8. 打包发布 Qt Quick/Widgets 程序

    使用的QT自带的部署工具(windeployqt.exe,路径QT安装路径),版本替换debug/release Qt Quick "C:\Qt\Qt5.8.0\5.8\mingw53_32 ...

  9. 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案

    笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...

随机推荐

  1. scala 主从构造器

    package cn.scala_base.oop.scalaclass /** * 构造器分为两种,一种是主构造器,另一种是从构造器,所有的从构造器必须在其方法体 * 的第一行调用主构造器 * * ...

  2. 常见的面试C#技术题目

    遍历查询窗体界面的textbox为空值 ? foreach (System.Windows.Forms.Control control in this.Controls)            {   ...

  3. React事件处理函数传参问题

    React事件处理函数参数 HTML标签与React 组件是不同的,事件对象e是HTML标签元素的,组件没有的.

  4. matlab 编程的细节问题

    1. reshape 对元素的操作 使用单一维度对矩阵进行操作时,矩阵是逐列地进行编号的(如下矩阵中的 4, 5, 6,分别在矩阵 A 的第 4, 5, 6 索引处,而不是以行进行排序的 2,5,8 ...

  5. 一次解决React+TypeScript+Webpack 别名(alias)找不到问题的过程「转载」

    链接 引言 在组件开发中,业务功能和基础组件一般分开放,比如在我们的项目中,components为基础组件, container为业务组件,但是在container中调用components中的组件时 ...

  6. yii2.0复选框默认选中

    <?php $model->node = array('0','2') ;?>   <? echo $form->field($model,'node')->che ...

  7. google地图API的简单使用

    <div id="contact_container" style="width:700px;height:600px;"></div> ...

  8. Array方法总结

    一.不影响原数组产生一个新数组 slice:切片->返回新数组->复制数组:arr.slice(0) arrayObject.slice(start,end): 切片 var arr= [ ...

  9. 学习 NLP(一)—— TF-IDF

    TF-IDF(Term Frequency & Inverse Document Frequency),是一种用于信息检索与数据挖掘的常用加权技术.它的主要思想是:如果某个词或短语在一篇文章中 ...

  10. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[BandedSwirl]

    原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[BandedSwirl] 因工作原因,需要在Silverlight中使用Pixel Shader技术,这对于我来 ...