您的位置:首页 > 编程语言 > Qt开发

Windows下发布一个Qt程序隐藏QML文件

2013-03-19 16:21 405 查看
背景:发布一个包含QML的程序的时候,按照以前的方法是将QML文件夹包含进来,然后随EXE文件一起打包,双击运行即可!但考虑到QML文件的可继续修改会影响到程序的完整性,所以希望能够将QML包含到exe文件中!

在网上搜了搜,也找到了答案,经过测试是行得通的!所以总结一下,给大家分享!错误的地方还望指正!

首先,新建一个QtQuick项目,编辑好各种QML文件,在pro文件里面会有这么几句话:

# Add more folders to ship with the application, here
folder_01.source = qml
folder_01.target =
DEPLOYMENTFOLDERS= folder_01


好了,现在开始修改了;
首先是新建一个资源文件(*.qrc),修改资源文件的前缀为“/”,然后将所有的qml文件以及图片文件等等添加到资源文件中(网上也有说qmldir文件也要放入资源文件中,这个没有亲测所以不晓得了!)

接下来就是使用了!

在main中,若是用Qt Creator默认的创建的项目,viewer使用的是QmlApplicationViewer,但本质都是QDeclarativeView,

所以都是可以使用setSource方法的,在setSource中引入qrc中的你的QML主文件;

    QmlApplicationViewer viewer;

    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);

    //viewer.setMainQmlFile(QLatin1String("qml/HelloWorld/main.qml"));

    viewer.setSource(QUrl("qrc:/qml/HelloWorld/main.qml"));

    viewer.showExpanded();

结构测试,编译运行的时候,将pro文件中引入qml的

DEPLOYMENTFOLDERS
等等代码注释掉也是可以运行的!哈哈,目的达到了!


并且,在QML中,经测试,使用image等元素的时候,使用相对路径也是可以的!

以前写代码都是发布之后,exe与qml文件夹一并拷贝出来,现在可以考虑都打包到exe中了!

PS:就是不知道这种做法的劣势在哪,隐约觉得会不会影响运行速度什么的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: