Хранение настроек
Qt поставляется с элементом Settings
для загрузки и хранения настроек. Он всё еще находится в лабораторном модуле, а это значит, что его API в будущем может сломаться. Поэтому имейте это в виду.
Вот небольшой пример, который применяет значение цвета к базовому прямоугольнику. Каждый раз, когда пользователь кликает на окно, генерируется новый случайный цвет. Когда приложение будет закрыто и перезапущено снова, вы должны увидеть свой последний цвет. Цвет по умолчанию должен быть цветом, изначально установленным для корневого прямоугольника.
import QtQuick
import Qt.labs.settings 1.0
Rectangle {
id: root
width: 320
height: 240
color: '#fff' // цвет по умолчанию
Settings {
property alias color: root.color
}
MouseArea {
anchors.fill: parent
// случайный цвет
onClicked: root.color = Qt.hsla(Math.random(), 0.5, 0.5, 1.0);
}
}
Значение настроек сохраняется каждый раз при изменении значения. Это может быть не всегда то, что вам нужно. Чтобы сохранять настройки только при необходимости, вы можете использовать стандартные свойства в сочетании с функцией, которая изменяет настройки при вызове.
Rectangle {
id: root
color: settings.color
Settings {
id: settings
property color color: '#000000'
}
function storeSettings() { // возможно, выполняется при уничтожении
settings.color = root.color
}
}
Также можно сгруппировать настройки в разные категории, используя свойство category
.
Settings {
category: 'window'
property alias x: window.x
property alias y: window.x
property alias width: window.width
property alias height: window.height
}
Настройки сохраняются в соответствии с именами ваших приложения, организации и домена. Эта информация обычно задается в функции main
вашего кода на C++.
int main(int argc, char** argv) {
...
QCoreApplication::setApplicationName("Awesome Application");
QCoreApplication::setOrganizationName("Awesome Company");
QCoreApplication::setOrganizationDomain("org.awesome");
...
}
Если вы пишете приложение на чистом QML, вы можете установить эти же атрибуты, используя глобальные свойства Qt.application.name
, Qt.application.organization
и Qt.application.domain
.