如何在QML使用Sqlite数据库

如何在QML使用Sqlite数据库,第1张

在程序中,我们经常需要把一些数据持久化,比如一些设置信息和程序配置。QML并不能直接访问本地文件,但是可以通过

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 (Qt Markup Language)是基于JavaScript、宣告式编程的编程语言,用于设计用户界面为主的应用程序。它是Qt Quick,诺基亚开发的用户界面创建包的一部分。

QML 主要用于移动应用程序,注重于触控输入、流畅的动画(60张/秒)和用户体验。QML documents 描述元素的对象树。

Qt 附带的QML 模块包括原始图形构建块(例如,矩形、图像)、建模组件;行为组件(例如,TapHandler、DragHandler、State、Transition、Animation)以及更复杂的组件控件(例如,按钮、滑块、抽屉、菜单)。

这些元素可以组合起来构建从简单的按钮和滑块到完整的支持 Internet 的程序的复杂组件。

QML 元素可以通过标准JavaScript内联和通过包含的 .js 文件进行扩充。元素也可以通过使用 Qt 框架的C++组件无缝集成和扩展。

QML 是语言;它的 JavaScript 运行时是自定义的 V4 引擎,自 Qt 5.2 起;而Qt Quick是2D场景图和基于它的UI框架。这些都是 Qt Declarative 模块行橡的一部分,而该技术不再称为 Qt Declarative。

QML 和 JavaScript 代码可以使用 Qt Quick Compiler 编译成原生 C++ 二进制文件。档颂旁或者,还有一种 QML 缓存文件格式,它动态存储 QML 的编译版本,以便在下次运行时更快地启动。

开发工具

由于 QML 和 JavaScript 非常相似,几乎所有支持 JavaScript 的代码编辑器都可以使用。

但是,自 2.1 版以来的免费跨平台 IDEQt Creator和许多其他 IDE 中都提供了对语法突出显示、代码完成、集成帮助和所见即所得编辑器的全面支持。

qml 可执行文件可用于将樱耐 QML 文件作为脚本运行。如果 QML 文件以shebang开头,则它可以直接执行。为部署打包应用程序(尤其是在移动平台上)通常涉及编写一个简单的 C++ 启动器并将必要的 QML 文件打包为资源。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12289058.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存