3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

QtAdvent Calendar 2020

Day 11

QMLアプリのデータ保存

Last updated at Posted at 2020-12-10

Qtアプリにおけるファイル保存

通常のQtアプリ(C++)でアプリ設定を保存することを考えるとき、通常ユーザーフォルダなどにiniファイルで保存します。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がシンプルなのでこれ以上特に語ることはなさそうですね。

なにか疑問や質問がある方はコメントをください。

3
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?