首现承认楼主有点标题党了~
但是的确碰见了个很诡异的QML问题。
废话不多说直接上代码
main.qml文件
- import QtQuick 1.1
- import "InitDatabase.js" as Database
- import "AddInfo.js" as AddInfo
- Rectangle {
- width: 360
- height: 360
- Text {
- id:text
- text: ""
- anchors.centerIn: parent
- }
- MouseArea {
- anchors.fill: parent
- onClicked: {
- AddInfo.addInfo()
- AddInfo.loadInfo()
- }
- }
- Component.onCompleted: {
- Database.initDatabase()
- }
- }
InitDatabase.js文件
- function initDatabase() {
- var db = openDatabaseSync("StoreManagement", "1.0", "StorageDatabase", 100000);
- db.transaction(
- function(tx){
- tx.executeSql('CREATE TABLE IF NOT EXISTS shoes(shoe_property text)');
- }
- )
- }
AddInfo.js文件
- function addInfo() {
- var db = openDatabaseSync("StoreManagement", "1.0", "StorageDatabase", 100000);
- db.transaction(
- function(tx){
- tx.executeSql("insert into shoes (shoe_property) values('hello world')");
- }
- )
- }
- function loadInfo() {
- var db = openDatabaseSync("StoreManagement", "1.0", "StorageDatabase", 100000);
- db.transaction(
- function(tx){
- var rs = tx.executeSql("select * from shoes");
- console.debug(rs.rows.length)
- var index=0;
- var tmpTxt=""
- text.text=""
- while (index < rs.rows.length) {
- var txt = rs.rows.item(index).shoe_property
- console.debug(txt)
- tmpTxt += txt + "\n"
- index++
- }
- console.debug(tmpTxt)
- text.text= tmpTxt.toString()
- }
- )
- }
实现的效果很简单,就是在一个
界面中点击一次text文本多一行"helloworld"
当然“helloworld”在点击后会插入
数据库,然后再从数据库取出来(不要说楼主犯2了,这只是个测试)。
在我本机用Qt Creator中(Qt版本5.0.2 Qt Creator 2.7.0 都是opensource)一切美好,
编译release版本,制作发布包,包截图如下:
执行Test.exe,在本机一切完好(看似美好。。。)
问题来了:
将发布包拷贝的
其他裸机上面,同样能正常运行,
但是点击界面并不会有任何显示发布包和工程源码奉上:
但是各位看官请按照下面步骤操作:
务必先执行发布包中的exe,原因是加载源码到Qt creator并且编译运行一次之后,发布包就程序就能正常执行只要不用Qt creator编译一次工程,任何点击都不会有效果(在2台裸机上面测试过)这个就是让我匪夷所思的地方。
初步判断的出现这个情况是因为js代码执行异常,但是在Qt creator中却
没有任何问题,
在给裸机运行时,js代码我中断在AddInfo.js的openDatabaseSync这里,
怀疑是否是InitDatabase.js文件中打开数据库并没有关闭,
于是忽googleHK了一下,在HTML5标准中没有任何信息显示需要关闭数据库。
唯一发现了个帖子
http://www.developer.nokia.com/Community/Discussion/showthread.php?221276-How-to-close-database-opened-with-openDatabaseSync 。
各位看官有碰到这种情况么?求解答