最近用C++和QML写了一个音乐播放器Clean Player,前前后后遇到不少问题,好在现在基本解决了,现在先总结下QML程序的发布。

  1. QML文件加载可用绝对路径和相对路径,建议将.qml文件加载到资源文件中,这样可以将.qml文件编译到程序中,不用一起打包发布。具体教程参考http://qt-project.org/doc/qt-5/qtquick-deployment.html

  2. QML需要OpenGL的支持,所以必须确保客户的显卡驱动安装正确,如果是虚拟机,请打开3D加速,否则界面为一片空白。如果虚拟机是VirtualBox,3D加速可以在“设置-->显示-->显卡”下开启。

    wKioL1Og6hPS4O6oAALhk7FKP6I436.jpg

  3. QML程序发布时除了添加Qt安装目录bin文件夹相关链接库外,还需要qml文件夹(如“D:\Qt\Qt5.3.0\5.3\mingw482_32\qml”),plugins文件夹下相关文件,可以使用Qt自带的windeployqt工具进行部署,Qt程序在windows下部署参考http://qt-project.org/doc/qt-5/windows-deployment.html,动态编译的Clean Player打包目录如下图:

    wKiom1Og833imQwoAAJPnVjrLhc349.jpg

  4. QML程序即使是静态编译也要附带上qml文件夹下相关文件,如QtMultimedia,QtQuick,QtQuick.2等文件夹,发布之前,可把里面的库文件删除,只保留.qml,.qmltypes等类型文件,静态编译的Clean Player打包目录如下图:

    wKioL1Og9RXzSCuaAABYJdbMKCA482.jpg

至此,程序可以顺利在虚拟机上运行,但是程序运行时出现了中文字符乱码(真机XP环境下正常),不知道大家有没有遇到这个问题,下面是win7下和虚拟机XP下Clean Player的截图:

wKiom1Og-RjCq_KfAALDpBmlxfI310.jpg

win7下的Clean Player


wKiom1Og-0rDWNByAAJ3R9knXus622.jpg

虚拟机下的Clean Player

 PS:

  1. Clean Player代码托管在GitHub;

  2. Clean Player下载地址:http://pan.baidu.com/s/1bns3lld.