QML 本地存儲(Setting,sqlite)

Qt hello - 專注于Qt的技術分享平臺

QML 原生的儲存方有兩種:

1,Settings

跟QWidget 中的QSettings 一樣,可以簡單的存儲一些配置。

2,Sqlite

sqlite數據庫。可以存儲一些復雜的數據。

一,Settings

我們以一個按鈕的位置為例,進行講解。

按鈕移動時將x y 保存到Settings 中。

下次加載頁面時 從Settings 讀取位置。

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import Qt.labs.settings 1.0Window {width: 640height: 480visible: truetitle: qsTr("Hello World")Settings {id: settingsproperty int x: 0property int y: 0}Button{id:btntext: "hello"x:settings.xy:settings.y}Button{anchors.centerIn: parenttext: "move"onClicked: {btn.x+=10btn.y+=10settings.x = btn.xsettings.y = btn.y}}
}

main.cpp 中需要 定義 應用程序名稱,公司名稱,域名稱。

效果:

QML 存儲 - Qt hello

二,SQLite

1,將數據庫操作 單獨封裝成一個js文件。

var db;function initDatabase() {db = LocalStorage.openDatabaseSync("Test", "1.0", "", 100000);try {db.transaction( function(tx) {tx.executeSql('CREATE TABLE IF NOT EXISTS data(name TEXT, desc TEXT, value TEXT)');})} catch (err) {console.log("Error creating table in database: " + err)};
}function readData(name) {var res="";if(!db) { return; }db.transaction( function(tx) {var result = tx.executeSql('select value from data where name=?', [name]);if (result.rows.length > 0) {res = result.rows.item(0).value;} else {res = "Unknown";}})return res
}function insertData(name, desc,value) {var res = "";if(!db) { return; }db.transaction( function(tx) {var result = tx.executeSql('INSERT OR REPLACE INTO data VALUES (?,?,?);', [name,desc, value]);if (result.rowsAffected > 0) {res = "OK";} else {res = "Error";}})return res
}

2,使用的時候 引入js 文件,之后直接調用接口就可以了。

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15import QtQuick.LocalStorage 2.0
import "db.js" as DBWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Component.onCompleted: {//初始化數據庫DB.initDatabase()}Column{anchors.centerIn: parentspacing: 10Row{spacing: 10Button{text: "添加"onClicked: {//添加數據DB.insertData(name.text,desc.text,value.text)}}TextField{id:name}TextField{id:desc}TextField{id:value}}Row{spacing: 10Button{text: "查詢"onClicked: {//查詢數據result.append(DB.readData(queryName.text))}}TextField{id:queryName}TextEdit{id:result}}}
}

3,main.cpp 中 指定下數據庫的保存路徑,比如當前路徑。 不指定的話,會默認存到系統路徑,不太好找。

4,效果

QML 存儲 - Qt hello

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10154.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10154.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10154.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙DevEco Studio 4.1 Release-模擬器啟動方式錯誤

軟件版本:DevEco Studio 4.1 Release 報錯提示: 沒有權限查看處理指導 Size on Disk 顯示1.0MB 嘗試方案(統統無效): 1、“windows虛擬機監控程序平臺”、"虛擬機平臺"已開啟 啟用CPU虛擬化 2、C…

DIY可視化軟件環境準備

DIY官網可視化工具做好的可視化拖拽開發工具無須編程、零代碼基礎、所見即所得設計工具支持輕松在線可視化導出微信小程序、支付寶小程序、頭條小程序、H5、WebApp、UNIAPP等源碼 支持組件庫,高顏值,卡片,列表,輪播圖,導航欄,按鈕,標簽,表單,單選,復選,下拉選擇,多層選擇,級聯選…

【大華可見光攝像頭】ffmpeg獲取視頻流并下載mp4 報錯‘subtype‘ 不是內部或外部命令,也不是可運行的程序

我現在要通過ffmpeg獲取大華攝像頭視頻流并下載成mp4,但我在cmd窗口運行下面命令的時候,發現報錯: D:\Java\ffmpeg\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe -y -i rtsp://admin:123xxx.xxx.xxx.xxx/cam/realmonitor?channel1&s…

springboot 連接hive的坑

本地運行時倒是沒啥問題,一上線啟動接連報錯。網上各種找答案,本質上還是依賴沖突報錯,不知道使用哪個具體類 Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;The followi…

代碼隨想錄-算法訓練營day36【貪心算法06:單調遞增的數字、監控二叉樹、總結】

代碼隨想錄-035期-算法訓練營【博客筆記匯總表】-CSDN博客 第八章 貪心算法 part06● 738.單調遞增的數字 ● 968.監控二叉樹 ● 總結 詳細布置 738.單調遞增的數字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html…

Qt Tab鍵切換焦點順序:setTabOrder()

使用這個方法setTabOrder(),設置使得焦點的順序從前到后依次是: ui->lineEdit》 ui->lineEdit_2》ui->lineEdit_3 》ui->lineEdit_4 焦點先在ui->lineEdit上,當按下Tab鍵時,焦點跑到ui->lineEdit_2上。。。按…

同步假設 - 同步方法對實時控制系統的抽象

同步假設是如SCADE、Lustre等同步語言所基于的基礎。這些假設是對實時系統環境的一種抽象。對本文討論涉及到的內容,可進一步參考《Representation and Analysis of Reactive Behaviors: A Synchronous Approach》(SyncCharts, 1996)。 同步方法采用了一種理想化的抽…

通過顏色學習css

文章目錄 1.生成html2.添加css鏈接3.將h1標簽text-align元素4.添加div標簽4.1、為類marker添加元素4.2、添加兩個新的div標簽4.3、修改div標簽的類型并修改css元素4.4、為類container添加元素4.5、以數字形式添加顏色4.5、container添加padding屬性4.6、組合css中的顏色屬性4.7…

【Matlab】Matlab之美,抓緊來膜拜大神的創星之作(附2024Matlab教程+代碼)

軟件介紹 MATLAB是一款商業數學軟件,用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分,可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序…

自回歸模型的優缺點及改進方向

在學術界和人工智能產業中,關于自回歸模型的演進與應用一直是一個引發深入討論和多方觀點交鋒的熱門議題。尤其是Yann LeCun,這位享譽全球的AI領域學者、圖靈獎的獲得者,以及被譽為人工智能領域的三大巨擘之一,他對于自回歸模型持…

Rust:函數封裝,struct 還是 mod?

在Rust中,是否將一組功能相關的靜態函數組織到一個結構體(struct)中,或者直接利用模塊(mod)機制來組織,主要取決于你的具體需求和設計考慮。以下是一些指導原則: 使用結構體封裝靜態…

華為與達夢數據簽署全面合作協議

4月26日,武漢達夢數據庫股份有限公司(簡稱“達夢數據”)與華為技術有限公司(簡稱“華為”)在達夢數據武漢總部簽署全面合作協議。 達夢數據總經理皮宇、華為湖北政企業務總經理呂曉龍出席并見證簽約;華為湖…

MySQL優化方向

MySQL優化手段 數據庫設計層面 范式設計 減少數據冗余提高數據一致性 索引策略 選擇合適的索引類型 (BTREE, HASH)覆蓋索引索引選擇性 表結構優化 使用合適的數據類型避免使用NULL 分區表 水平分區垂直分區 SQL查詢優化 EXPLAIN分析 識別慢查詢 避免全表掃描 使用索引優化…

LeetCode 212.單詞搜索II

https://leetcode.cn/problems/word-search-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 文章目錄 題目描述解題思路代碼實現 題目描述 給定一個 m x n 二維字符網格 board 和一個單詞(字符串)列表 words, 返回所有二…

#OD314. 解密犯罪時間

題目描述 警察在偵破一個案件時,得到了線人給出的可能犯罪時間,形如 “HH:MM” 表示的時刻。 根據警察和線人的約定,為了隱蔽,該時間是修改過的, 解密規則為:利用當前出現過的數字,構造下一個…

geotrust dv通配符證書800

Geotrust是成立時間較久的正規CA認證機構,在過去的幾十年間頒發了無數的SSL證書,這些SSL證書被各個開發者使用,受到大多數瀏覽器的信任。而Geotrust旗下的DV通配符證書因其廣泛的應用范圍受到了用戶的青睞。今天就隨SSL盾小編了解Geotrust旗下…

Ardupilot Rpanion iperf網絡性能測試

Ardupilot Rpanion iperf網絡性能測試 1. 源由2. 分析3. 安裝4. 測試4.1 第一次測試4.1.1 iperf測試參數A4.1.1.1 測試鏈路14.1.1.2 測試鏈路24.1.1.3 測試鏈路3 4.1.2 iperf測試參數B - 測試鏈路34.1.2.1 測試數據4.1.2.2 數據簡單分析4.1.2.3 數據深入分析4.1.2.4 模擬測試網…

Vue 中使用 el-date-picker 限制只能選擇當天、當天之前或當天之后日期的方法詳解

網上很多都是不完整的,我這里發布一個完整的 - 8.64e7 表示可選擇當天時間(注:小于當前時間,- 8.64e7 則是禁用日期不包含當前日,若大于當前日期, 8.64e7 則是禁用日期包含當前日) time.getTi…

c++ 讀寫鎖的理解

1.概要 讀寫鎖的理解 讀的時候,只要是讀的線程都不受限制,但不能寫。 寫的時候,線程獨占,任何寫和讀的線程都不可以。 最初我以為,只有限制寫就可以了,讀完全不受現在,但是有可能讀到不完整的…

【初始類和對象】(實例講解!超級詳細!)

【初始類和對象】 前言1. 面向對象的初步認知1.1什么是面向對象1.2 面向對象與面向過程 2. 類的定義和使用2.1 簡單認識類2.2 類的定義格式 3. 知識的代碼舉例講解3.1 創建類、實例化類3.2 構造方法初始化類、this 3. 總結 前言 由于類和對象是我們在學習過程中需要接受的概念…