Settings QML Type

플랫폼에 독립적인 애플리케이션 설정을 영구적으로 제공합니다. 더 보기...

Import Statement: import Qt.labs.settings 1.0
Status: Deprecated since 6.5

이 유형은 Qt.labs.settings 6.5부터 더 이상 사용되지 않습니다. 새 코드에서 사용하지 않는 것이 좋습니다.

속성

방법

  • setValue(string key, var value) (since Qt 5.12)
  • sync()
  • var value(string key, var defaultValue) (since Qt 5.12)

자세한 설명

대신 Qt Qml Core에서 Settings 을 사용하세요.

설정 유형은 플랫폼에 독립적인 영구 애플리케이션 설정을 제공합니다.

참고: 이 유형은 Qt.labs.settings 모듈을 가져와서 사용할 수 있습니다. Qt.labs 모듈의 유형은 향후 버전에서 호환성을 유지한다고 보장되지 않습니다.

사용자는 일반적으로 애플리케이션이 여러 세션에 걸쳐 설정(창 크기와 위치, 옵션 등)을 기억하기를 기대합니다. 설정 유형을 사용하면 최소한의 노력으로 이러한 애플리케이션 설정을 저장하고 복원할 수 있습니다.

개별 설정 값은 설정 요소 내에서 속성을 선언하여 지정합니다. 모든 값 유형 속성이 지원됩니다. 두 가지 방법으로 자동 속성 업데이트를 받으려면 속성 별칭을 사용하는 것이 좋습니다. 다음 예는 설정을 사용하여 창의 지오메트리를 저장하고 복원하는 방법을 보여줍니다.

import QtQuick.Window
import Qt.labs.settings

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
import Qt.labs.settings

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
    }
}

이제 기본값이 영구 설정 프로퍼티에 지정되고 실제 프로퍼티가 영구 설정에서 초기 값을 가져오기 위해 설정에 바인딩되는 방식에 주목하세요.

애플리케이션 식별자

애플리케이션별 설정은 애플리케이션 name, organizationdomain 을 제공하거나 fileName 을 지정하여 식별할 수 있습니다.

#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++에서는 main() 의 시작 부분에 지정되지만, QML에서도 다음 프로퍼티를 통해 제어할 수 있습니다:

카테고리

category 속성을 통해 카테고리 이름을 지정하여 애플리케이션 설정을 논리적 카테고리로 나눌 수 있습니다. 논리적 카테고리를 사용하면 설정 구조가 더 깔끔해질 뿐만 아니라 설정 키 간에 발생할 수 있는 충돌도 방지할 수 있습니다.

여러 개의 카테고리가 필요한 경우에는 각각 고유한 카테고리를 가진 여러 개의 설정 개체를 사용하세요:

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 문서를 참조하세요.

SettingsQSettings참조하세요 .

속성 문서

category : string

이 속성은 설정 카테고리의 이름을 보유합니다.

카테고리를 사용하여 관련 설정을 함께 그룹화할 수 있습니다.


fileName : string [since Qt 5.12]

이 속성에는 설정 파일의 경로가 저장됩니다. 파일이 아직 존재하지 않으면 파일이 생성됩니다.

이 속성은 Qt 5.12에 도입되었습니다.

QSettings::fileNameQSettings::IniFormat참조하십시오 .


메서드 문서

[since Qt 5.12] setValue(string key, var value)

key 의 값을 value 로 설정합니다. 키가 이미 존재하면 이전 값을 덮어씁니다.

이 메서드는 Qt 5.12에 도입되었습니다.

value() 및 QSettings::setValue참조하십시오 .


sync()

저장되지 않은 변경 사항을 영구 저장소에 쓰고 그 사이에 다른 애플리케이션에서 변경한 설정을 다시 로드합니다.

이 함수는 QSettings 의 소멸자 및 이벤트 루프에서 일정 간격으로 자동으로 호출되므로 일반적으로 직접 호출할 필요가 없습니다.

QSettings::sync참조하세요 .


[since Qt 5.12] var value(string key, var defaultValue)

설정 값을 반환합니다 key. 설정이 존재하지 않으면 defaultValue 를 반환합니다.

이 메서드는 Qt 5.12에 도입되었습니다.

setValue() 및 QSettings::value도 참조하십시오 .


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.