• 8296阅读
  • 20回复

[提问]QML程序打包后部分js代码不能执行 [复制链接]

上一主题 下一主题
离线luoqiya
 
只看楼主 倒序阅读 楼主  发表于: 2013-05-20
采用Qt4.8.4版本,编写了一个样例需要操作本地数据,采用的是js方法openDatabaseSync,在Qt creator中功能完全正常,然后将release版本的exe和qml文件夹考出来,加载上Qt的很多动态库,本机也没问题,但是拷贝到别人机器上面,出现了只有一个文件的js代码可以执行,别的文件的js代码完全不起效,有谁碰到过这样情况不。发布的库上图:
离线toby520

只看该作者 1楼 发表于: 2013-05-21
想问下楼主 是否可以把调试窗口打开,看到加载qml时候哪里报错了,那样找到问题就容易多啦,关于发布带有qml的Qt程序,只要将qml文件加载到qrc文件中,直接编译到exe里面去了,可能发布时候要把基于qml的一些组件发布出去
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线luoqiya
只看该作者 2楼 发表于: 2013-05-21
回 1楼(toby520) 的帖子
在DEBUG模式下 js代码可以执行,而且完全没有问题,在本机上发布包也OK,就是拷贝到别人机器上执行exe时,对应的按钮不调用相应的js函数,所以我想在界面上面加个log框都打印不出来,本来是准备打包进exe的,可是这样都出现了问题就没往下做,源码以及发布包都可以奉上,在发布包里面就执行了InitDatabase里面的函数,其他js文件都没有执行。
描述:源码
附件: ProductManagment.rar (162 K) 下载次数:11
描述:发布包
附件: qmlApp.rar (7769 K) 下载次数:9
离线luoqiya
只看该作者 3楼 发表于: 2013-05-21
回 1楼(toby520) 的帖子
还有一个情况比较奇怪,在将源码拷贝到另一个安装Qt的机器上时,第一次编译和执行源码,也失败,而且失败刚好是需要调用的js文件中执行SQL语句的过程,但是第二次就好了,我怀疑是不是需要配置什么东西,但是google上没有任何信息。。。。
离线toby520

只看该作者 4楼 发表于: 2013-05-21
我这边一切正常呀,几个页面切换没有问题,而且发布包也能正常运行 和开发环境的结果是一样的。我发现你的单个qml文件快超过2000行啦,这个有点。。。
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线luoqiya
只看该作者 5楼 发表于: 2013-05-21
回 4楼(toby520) 的帖子
页面切换没有调用js文件里面的函数,所以一切正常,看上的图
在图上最下面的按钮添加属性里面输入 “颜色(红色,白色,蓝色)”,不需要引号额
你试试你那边有效果么?
按道理会把颜色字段加入到第一个listView,红色白色蓝色,会加入到第二个listView
但是我拷贝给别人是添加不上的,js里面console.debug打印不出来信息,所以在需要执行的代码里面加入了对UI的操作,才发现JS代码没有执行。
PS:代码的确没怎么优化,白天上班,晚上就3个小时,搞了一个星期,楼主原本就不会QML和JS,只不过写着玩的,发现QML挺简单。。。
你就别吐槽了。。。
离线luoqiya
只看该作者 6楼 发表于: 2013-05-21
回 4楼(toby520) 的帖子
在说下,在鞋子页面点击添加属性会调用Product.js代码里面的insertNewShoesPropery函数,但是别人机器上面测试么效果
离线toby520

只看该作者 7楼 发表于: 2013-05-21
我回家好好看看吧 现在要上班 哈哈
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线luoqiya
只看该作者 8楼 发表于: 2013-05-21
-。-!
我也在上班~
离线luoqiya
只看该作者 9楼 发表于: 2013-05-21
回 7楼(toby520) 的帖子
我又用Qt 5.0.2测试了(不得不说发布的包真多),还是同样的现象,在本机下每个js文件可以执行,但是拷贝到别人机器上面js文件就又不能执行了,我怀疑是不是
openDatabaseSync
这个本地数据库操作在新文件失效造成的。
而且奇怪的我这台计算机安装有Qt 5.0.2 本来也出现了同样的问题,但是用Qt creator导入源码,编译一次就再也没出现了,这个着实让我蛋疼啊
离线luoqiya
只看该作者 10楼 发表于: 2013-05-21
难道这问题又沉了。。。
离线xsjqqq123

只看该作者 11楼 发表于: 2013-05-21
ProductManagment/AddProductBag.js:101: Error: unrecognized token: ":???(property" Unable to execute statement

无法识别这个,话说sql中的property这个属性?
离线xsjqqq123

只看该作者 12楼 发表于: 2013-05-21
弄错,,……我电脑上就那个提示,还有,似乎也不能载入……
离线luoqiya
只看该作者 13楼 发表于: 2013-05-21
回 12楼(xsjqqq123) 的帖子
你是直接加载的工程还是先运行的包?
先运行包是无法提示错误的吧
要是先运行工程就看不出来为什么不能执行js代码了
离线luoqiya
只看该作者 14楼 发表于: 2013-05-21
在尝试了添加UI操作 来到裸机上面调试,发现了侦结所在。。。
在initDatabase.js文件中可以执行openDatabaseSync
但是到AddProduct.js文件中执行到openDatabaseSync时就直接停掉了,脚本语言只有运行时看得到问题,我泪奔了
但是不知道怎么解决。。。。
求助Qter啊!!!
离线toby520

只看该作者 15楼 发表于: 2013-05-22
js里面操作数据库暂时还没有啥经验,不太清楚,如果问题出在数据库那就难说啦
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线luoqiya
只看该作者 16楼 发表于: 2013-05-22
回 15楼(toby520) 的帖子
只是奇怪为什么本机可以执行,发布给裸机后不行,但是裸机用Qt creator编译一次就又好了,这种问题真是。。。
离线xsjqqq123

只看该作者 17楼 发表于: 2013-05-26
我这几天做了个天气预报的,用了 qml的localstorage,发现网上的例子,需要在openDatabaseSync加上LocalStorage.openDatabaseSync
离线luoqiya
只看该作者 18楼 发表于: 2013-05-26
你说的地址是http://qt-project.org/doc/qt-5.0/qtquick/qmlmodule-qtquick-localstorage2-qtquick-localstorage-2.html
用的是QtQuick 2.0 我尝试一下明天看看这个有木有问题
离线luoqiya
只看该作者 19楼 发表于: 2013-05-27
回 17楼(xsjqqq123) 的帖子
使用QtQuick 2.0测试了折腾完毕发布包,拷贝到裸机上面,这回连界面都不出来了,难道是我折腾的发布包有问题
上图!
离线toby520

只看该作者 20楼 发表于: 2013-05-28
没有提示缺少哪个库?建议你打开调试窗口,看看加载qml是否正确
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
快速回复
限100 字节
 
上一个 下一个