Qtアプリにおけるファイル保存
通常のQtアプリ(C++)でアプリ設定を保存することを考えるとき、通常ユーザーフォルダなどにiniファイルで保存します。QtではQSettingsクラスを使うのが一般的です。
- Qtアプリの設定を保存する方法(QSettings)
QMLアプリにおけるファイル保存
Qt.labs.settings
を使用します。
QMLアプリの場合、Android/iOS等の他のOSへのサポートを考慮されているためか、ファイル名を指定して保存、ロードするという仕組みにはされていないようです。
動作例
例として、Windowに保存ボタンを配置しただけの簡単なアプリを考えてみましょう。
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import QtQuick.Window 2.0
import Qt.labs.settings 1.0
ApplicationWindow {
id: _root
width: 640
height: 480
Button {
text: "設定を保存する"
onclick: settings.sync()
}
Settings {
id: settings
property alias x: _root.x
property alias y: _root.y
property alias width: _root.width
property alias height: _root.height
}
}
Settings { }
と書いた範囲が保存対象となります。idを settings
とした場合に、 settings.sync()
を呼び出すと現在の値がファイルとして保存されます。この辺はQSettingsと同じですね。
QSettingと違うところはセクションがなかったりファイル保存形式の指定がないところで、スマフォ向けのOSだとファイルIOが隠蔽されているためアプリ開発者からすると詳細を知る方法もあまりなく、ちゃんと保存できているならばフレームワーク任せでも良いと思います。
Settingsタグに書く property
は、サンプルのように property alias
で他のUI要素のパラメータにリダイレクトしてもいいですし、単に property var
として 保存できる変数扱いにしてもいいでしょう。
Settingsに関してはAPIがシンプルなのでこれ以上特に語ることはなさそうですね。
なにか疑問や質問がある方はコメントをください。