Settings QML Type
提供持久的獨立於平臺的應用程序設置。
導入語句: | import Qt.labs.settings 1.0 |
屬性
方法
詳細說明
Settings 類型提供持久的獨立於平臺的應用程序設置。
注意:此類型可通過導入Qt.labs.settings模塊獲得。Qt.labs模塊中的類型不能保證在將來的版本中保持兼容。
用戶通常希望應用程序在會話之間記住其設置(窗口大小和位置、選項等)。設置類型允許您以最小的工作量保存和還原此類應用程序設置。
通過在Settings元素中聲明屬性來指定各個設置值。支持所有基本類型屬性。推薦的方法是使用屬性別名,以便以兩種方式獲得自動屬性更新。下面的示例演示如何使用設置存儲和還原窗口的幾何圖形。
import QtQuick.Window 2.1
import Qt.labs.settings 1.0
Window {
id: window
width: 800
height: 600
Settings {
property alias x: window.x
property alias y: window.y
property alias width: window.width
property alias height: window.height
}
}
第一次啓動應用程序時,窗口將獲得指定爲800x600的默認維度。注意,沒有指定默認位置-我們讓窗口管理器來處理。稍後,當窗口幾何圖形更改時,新值將自動存儲到永久設置中。第二次運行的應用程序將從持久設置中獲取初始值,使窗口返回到以前的位置和大小。
通過使用屬性別名實現的完全聲明性語法的代價是,每當別名屬性的值發生更改時,都會存儲持久設置。普通屬性可用於獲得對存儲持久設置的更細粒度控制。下面的示例演示如何保存組件銷燬設置。
import QtQuick 2.1
import Qt.labs.settings 1.0
Item {
id: page
state: settings.state
states: [
State {
name: "active"
// ...
},
State {
name: "inactive"
// ...
}
]
Settings {
id: settings
property string state: "active"
}
Component.onDestruction: {
settings.state = page.state
}
}
請注意,現在如何在persistent setting屬性中指定默認值,並將實際屬性綁定到該設置,以便從persistent settings獲取初始值。
應用程序標識符
通過提供應用程序名稱、組織和域或指定文件名來標識特定於應用程序的設置。
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
app.setOrganizationName("Some Company");
app.setOrganizationDomain("somecompany.com");
app.setApplicationName("Amazing Application");
QQmlApplicationEngine engine("main.qml");
return app.exec();
}
這些通常在C++(在主程序的開頭)中指定,但也可以通過以下屬性在QML中控制:
類別
通過通過類別屬性指定類別名稱,可以將應用程序設置劃分爲邏輯類別。使用邏輯類別不僅可以提供更清晰的設置結構,而且還可以防止設置鍵之間可能發生的衝突。
如果需要多個類別,請使用多個設置對象,每個對象都有自己的類別:
Item {
id: panel
visible: true
Settings {
category: "OutputPanel"
property alias visible: panel.visible
// ...
}
Settings {
category: "General"
property alias fontSize: fontSizeSpinBox.value
// ...
}
}
與確保應用程序中的所有設置都具有唯一的名稱不同,可以將這些設置劃分爲唯一的類別,然後這些類別可能包含使用其他類別中使用的相同名稱的設置,而不會發生衝突。
說明:
當前的實現基於QSettings。這會帶來某些限制,例如缺少更改通知。使用一個設置實例寫入設置值不會更新另一個設置實例中的值,即使它們引用的是同一類別中的同一設置。
這些信息存儲在Windows的系統註冊表和macOS的XML首選項文件中。在其他Unix系統上,如果沒有標準,則使用INI文本文件。有關更多詳細信息,請參見QSettings文檔。
另請參見QSettings。
屬性文檔:
category : string
此屬性保留設置類別的名稱。
類別可用於將相關設置分組在一起。
fileName : string
此屬性保存設置文件的路徑。如果文件不存在,則創建該文件。
Qt 5.12引入了這種特性。
另請參見QSettings::fileName和QSettings::IniFormat。
方法文檔:
setValue(key, var value)
將“設置關鍵點”的值設置爲“值”。如果密鑰已存在,則覆蓋上一個值。
Qt 5.12中引入了該方法。
另請參見value()和QSettings::setValue。
sync()
將任何未保存的更改寫入永久存儲,並重新加載同時由其他應用程序更改的任何設置。
這個函數是由QSettings的析構函數和事件循環定期自動調用的,所以通常不需要自己調用它。
另請參見QSettings::sync。
var value(key, var defaultValue)
返回設置鍵的值。如果設置不存在,則返回defaultValue。
Qt 5.12中引入了該方法。
另請參見setValue()和QSettings::value。