Offline Storage API访问本地Sqlite数据库,从而达到目的。
首先在qml目录下创建一个storage.js
Js代码 收藏代码
//storage.js
// 首先创建一个helper方法连接数据库
function getDatabase() {
return openDatabaseSync("MyAppName", "1.0", "StorageDatabase", 100000)
}
// 程序打开时,初始化表
function initialize() {
var db = getDatabase()
db.transaction(
function(tx) {
// 如果setting表不存在,则创建一个
// 如果表存在,则跳过此步
tx.executeSql('CREATE TABLE IF NOT EXISTS settings(setting TEXT UNIQUE, value TEXT)')
})
}
// 插入数据
function setSetting(setting, value) {
var db = getDatabase()
var res = ""
db.transaction(function(tx) {
var rs = tx.executeSql('INSERT OR REPLACE INTO settings VALUES (?,?)', [setting,value])
//console.log(rs.rowsAffected)
if (rs.rowsAffected >0) {
res = "OK"
} else {
res = "Error"
}
}
)
return res
}
// 获取数据
function getSetting(setting) {
var db = getDatabase()
var res=""
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT value FROM settings WHERE setting=?', [setting])
if (rs.rows.length >0) {
res = rs.rows.item(0).value
} else {
res = "Unknown"
}
})
return res
}
然后就可以在qml里调用了
Qml代码 收藏代码
import Qt 4.7
//引入storage.js,起个别名Storage,以供后面使用
import "storage.js" as Storage
Rectangle {
width: 360
height: 360
id: screen
Text {
id: textDisplay
anchors.centerIn: parent
}
Component.onCompleted: {
// 初始化数据库
Storage.initialize()
// 赋值
Storage.setSetting("mySetting","myValue")
//获取一个值,并把它写在textDisplay里
textDisplay.text = "The value of mySetting is:\n" + Storage.getSetting("mySetting")
}
}
qml信号连接方法:1. 连接QtQuick提供的信号
这些信号已经定义好,我们只需要实现on。就好
直接通过对象连接3.通过connect连接。
QML是一种描述性的脚本语言,文件格式以.qml结尾。语法格式非常像CSS(参考后文具体例子),但又支持javascript形式的编程控制。QtDesigner可以设计出·ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从QtScript中进行访问。而QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进行方便的交互,使用起来非常方便。
QML是Qt推出的Qt Quick技术的一部分,是一种新增的简便易学的语言。QML是一种陈述性语言,用来描述一个程序的用户界面:无论是什么样子,以及它如何表现。在QML,一个用户界面被指定为具有属性的对象树。 这使得Qt更加便于很少或没有编程经验的人使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)