最近用C++和QML写了一个音乐播放器Clean Player,前前后后遇到不少问题,好在现在基本解决了,现在先总结下QML程序的发布。
QML文件加载可用绝对路径和相对路径,建议将.qml文件加载到资源文件中,这样可以将.qml文件编译到程序中,不用一起打包发布。具体教程参考http://qt-project.org/doc/qt-5/qtquick-deployment.html
QML需要OpenGL的支持,所以必须确保客户的显卡驱动安装正确,如果是虚拟机,请打开3D加速,否则界面为一片空白。如果虚拟机是VirtualBox,3D加速可以在“设置-->显示-->显卡”下开启。
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打包目录如下图:
QML程序即使是静态编译也要附带上qml文件夹下相关文件,如QtMultimedia,QtQuick,QtQuick.2等文件夹,发布之前,可把里面的库文件删除,只保留.qml,.qmltypes等类型文件,静态编译的Clean Player打包目录如下图:
至此,程序可以顺利在虚拟机上运行,但是程序运行时出现了中文字符乱码(真机XP环境下正常),不知道大家有没有遇到这个问题,下面是win7下和虚拟机XP下Clean Player的截图:
win7下的Clean Player
虚拟机下的Clean Player
PS:
Clean Player代码托管在GitHub;
Clean Player下载地址:http://pan.baidu.com/s/1bns3lld.
转载于:https://blog.51cto.com/cpp51/1427566