이 페이지에서

Settings QML Type

플랫폼에 구애받지 않는 영구적인 애플리케이션 설정을 제공합니다. 더 보기...

Import Statement: import QtCore
Since: Qt 6.5
Inherits:

QtObject

속성

방법

  • void setValue(string key, var value)
  • void sync()
  • var value(string key, var defaultValue)

상세 설명

'설정(Settings)' 유형은 플랫폼에 구애받지 않는 영구적인 애플리케이션 설정을 제공합니다.

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

개별 설정 값은 Settings 요소 내에서 속성을 선언하여 지정합니다. QSettings 에서 인식하는 값 유형만 지원됩니다. 양방향으로 속성이 자동으로 업데이트되도록 하려면 속성 별칭을 사용하는 것이 좋습니다. 다음 예제는 Settings를 사용하여 창의 기하학적 구조를 저장하고 복원하는 방법을 보여줍니다.

import QtCore
import QtQuick

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 QtCore
import QtQuick

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, organization, domain)를 제공하거나, location 를 지정하여 식별됩니다.

#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 속성을 통해 카테고리 이름을 지정함으로써 애플리케이션 설정을 논리적 카테고리로 나눌 수 있습니다. 논리적 카테고리를 사용하면 설정 구조를 더 깔끔하게 구성할 수 있을 뿐만 아니라, 설정 키 간의 잠재적인 충돌도 방지할 수 있습니다.

여러 카테고리가 필요한 경우, 각각 고유한 카테고리를 가진 여러 Settings 객체를 사용하십시오:

Item {
    id: panel

    visible: true

    Settings {
        category: "OutputPanel"
        property alias visible: panel.visible
        // ...
    }

    Settings {
        category: "General"
        property alias fontSize: fontSizeSpinBox.value
        // ...
    }
}

애플리케이션의 모든 설정 이름이 고유하도록 보장하는 대신, 설정을 고유한 범주로 나누면 다른 범주에서 사용되는 것과 동일한 이름을 가진 설정을 포함하더라도 충돌 없이 사용할 수 있습니다.

설정 싱글톤

모든 QML 파일에서 설정에 싱글턴으로 접근할 수 있도록 하는 것이 종종 유용합니다. 이에 대한 예제는 '할 일 목록(To Do List)' 예제를 참조하십시오. 구체적으로, AppSettings.qml이 싱글턴이며, CMakeLists.txt 파일에서 set_source_files_properties 를 통해 해당 파일에 대한 QT_QML_SINGLETON_TYPE 속성이 TRUE 로 설정됩니다.

참고

현재 구현은 QSettings 를 기반으로 합니다. 이로 인해 변경 알림 기능이 누락되는 등 특정 제한 사항이 발생합니다. Settings 인스턴스 하나를 사용하여 설정 값을 작성하더라도, 동일한 카테고리의 동일한 설정을 참조하고 있더라도 다른 Settings 인스턴스의 값은 업데이트되지 않습니다.

이 정보는 Windows에서는 시스템 레지스트리에, macOS에서는 XML 환경 설정 파일에 저장됩니다. 표준이 없는 다른 Unix 시스템에서는 INI 텍스트 파일이 사용됩니다. 자세한 내용은 QSettings 문서를 참조하십시오.

QSettings도 참조하십시오 .

속성 문서

category : string

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

카테고리를 사용하면 관련 설정을 한데 묶을 수 있습니다.

QSettings::group도 참조하십시오 .

location : url

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

이 속성이 비어 있는 경우(기본값), QSettings::defaultFormat()가 사용됩니다. 그렇지 않은 경우, QSettings::IniFormat 가 사용됩니다.

QSettings::fileName, QSettings::defaultFormat, QSettings::IniFormat도 참조하십시오 .

메서드 문서

void setValue(string key, var value)

key 설정의 값을 value 으로 설정합니다. 해당 키가 이미 존재하는 경우, 기존 값이 덮어쓰입니다.

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

void sync()

저장되지 않은 변경 사항을 영구 저장소에 기록하고, 그동안 다른 애플리케이션에 의해 변경된 설정을 다시 불러옵니다.

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

QSettings::sync도 참조하십시오 .

var value(string key, var defaultValue)

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

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

© 2026 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.