在程序中,我们经常需要把一些数据持久化,比如一些设置信息和程序配置。QML并不能直接访问本地文件,但是可以通过
Offline Storage API访问本地Sqlite数据库,从而达到目的。
首先在qml目录下创建一个storage.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里调用了
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");
}
}
分享到:
相关推荐
我们在用QT Quick的QML编写前端界面时,常常会用到前端SQLite数据库以保持本地的数据,此时你不需要用C++,直接用QML就可以了。 当编写完成代码后,你却不知道数据放在哪里了,实际上QT在你的代码完成后,会把数据库...
采用QT的前端界面QML框架,直接对本地数据库SQLite进行CURD操作;因采用QML技术,学员不需要懂得C++代码; 对数据输入的数据校验,采用了在数据输入框相同位置的出错信息提示,更加值观;对数据输入及数据展示,采用...
Qt使用MVC框架、sqlite3数据库、单例模式实现登录注册功能
iOS数据库SQLite3基本操作并将内容显示在tableView中
这是 Light Media Scanner 的 QML 插件。... 该项目使用的查询依赖于 LMS 的 GENIVI 媒体管理器版本的数据库模式,其中包括数据库中的专辑封面。 请参阅此处: : 有关使用示例,请参阅 main.qml。
SQLite数据库的使用,以及如何通过双ListView实现二级菜单。
适用于初学,UI界面简单
在使用QT的QSqlQueryModel操作SQLite数据库的时候,遇到了查询只能返回并显示256个结果的问题,如图1: 图1 而显然通常SQLite数据库中不止只有256个数据,像在我这个程序中,我的SQLite数据库中存了935个...
持久性:支持最常见的数据库,如SQLite,MySQL,PostgreSQL,Oracle,MS SQL Server,MongoDB(具有1-1,1-n,n-1和n-n关系); 序列化:JSON,二进制和XML格式; 反射(或内省):动态访问类定义,检索属性和调用类...
该库取消了ICU库,并编译了sqlite, odbc, postgresql数据库插件。 编译的选项如下,有兴趣可自行编译: configure -prefix C:/Qt/5.2.0 -release -opensource -nomake examples -nomake tests -no-accessibility -...
底层 SQLite 数据库的重新启用 农历,节假日 桌面透明工具 配置界面 ...... ####已解决: 月视图 Qt Organizer 代理层 事件编辑界面(EventEditView) ##构建与运行: 程序尚在快速开发阶段,暂不考虑安装包 #### ...
参加Intel Meego 开发比赛的优秀奖。 用了QML 来做界面,QT C++来做的开发。SQLITE做的数据库
QT5.12.0-+VS2017的编译环境,使用的是SQLITE的本地数据库,方便直接进行数据库操作。功能内容包括用户登录,数据库查询和录入,同时也支持使用excel的方式进行学生表数据的批量录入和导入,相对比较方便。
主要用例是让应用程序能够在自己的基于 SQLite 的应用程序文件中托管自己的文件系统。 特征 Qt 文件系统类透明 可以托管 QML 代码 只使用数据库中的一张表 轻量级和简单的代码 平台无关 麻省理工学院执照 用法 类似...
Flipper用Qt5编写,部分使用QML编写,并且应该使用QBS构建系统构建。 数据库格式为SQLITE3。 可以在以下找到手册: : 如有疑问,请发送电子邮件至给我发电子邮件,或通过 ping我 UPD:我现在有一个顾客: ://...
TripBlazer是一个正在开发的桌面应用程序,旨在使查看,编辑和(最终)创建通用运输提要规范(GTFS)数据更加... 使用QML的界面更加时尚。 添加块视图(顶级父级是块而不是路径)。 显示由运输提要验证器生成HTML页面。