Settings QML Type

Bietet persistente, plattformunabhängige Anwendungseinstellungen. Mehr...

Import Statement: import QtCore
Since: Qt 6.5
Inherits:

QtObject

Eigenschaften

Methoden

Detaillierte Beschreibung

Der Typ Einstellungen bietet dauerhafte, plattformunabhängige Anwendungseinstellungen.

Benutzer erwarten normalerweise, dass eine Anwendung ihre Einstellungen (Fenstergrößen und -positionen, Optionen usw.) über mehrere Sitzungen hinweg beibehält. Mit dem Typ Einstellungen können Sie solche Anwendungseinstellungen mit minimalem Aufwand speichern und wiederherstellen.

Individuelle Einstellungswerte werden durch die Deklaration von Eigenschaften innerhalb eines Settings-Elements festgelegt. Es werden nur Wertetypen unterstützt, die von QSettings erkannt werden. Es wird empfohlen, Eigenschafts-Aliase zu verwenden, um automatische Eigenschaftsaktualisierungen in beide Richtungen zu erhalten. Das folgende Beispiel zeigt, wie Settings verwendet wird, um die Geometrie eines Fensters zu speichern und wiederherzustellen.

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

Beim ersten Start der Anwendung werden die Standardabmessungen des Fensters auf 800x600 festgelegt. Beachten Sie, dass keine Standardposition angegeben ist - das überlassen wir dem Fenstermanager. Wenn sich die Fenstergeometrie später ändert, werden die neuen Werte automatisch in den dauerhaften Einstellungen gespeichert. Beim zweiten Durchlauf der Anwendung werden die Anfangswerte aus den dauerhaften Einstellungen übernommen, so dass das Fenster wieder die vorherige Position und Größe einnimmt.

Eine vollständig deklarative Syntax, die durch die Verwendung von Eigenschaftsaliasen erreicht wird, hat den Nachteil, dass die dauerhaften Einstellungen gespeichert werden müssen, wenn sich die Werte der Aliaseigenschaften ändern. Normale Eigenschaften können verwendet werden, um eine feinere Kontrolle über die Speicherung der dauerhaften Einstellungen zu erhalten. Das folgende Beispiel zeigt, wie eine Einstellung bei der Zerstörung einer Komponente gespeichert werden kann.

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

Beachten Sie, dass der Standardwert jetzt in der Eigenschaft der dauerhaften Einstellung angegeben ist und die eigentliche Eigenschaft an die Einstellung gebunden ist, um den Anfangswert aus den dauerhaften Einstellungen zu erhalten.

Anwendungsbezeichner

Anwendungsspezifische Einstellungen werden durch die Angabe von name, organization und domain oder durch die Angabe von location identifiziert.

#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();
}

Diese werden normalerweise in C++ am Anfang von main() angegeben, können aber auch in QML über die folgenden Eigenschaften gesteuert werden:

Kategorien

Anwendungseinstellungen können in logische Kategorien unterteilt werden, indem ein Kategoriename über die Eigenschaft category angegeben wird. Die Verwendung logischer Kategorien sorgt nicht nur für eine übersichtlichere Struktur der Einstellungen, sondern verhindert auch mögliche Konflikte zwischen Einstellungsschlüsseln.

Wenn mehrere Kategorien erforderlich sind, verwenden Sie mehrere Einstellungsobjekte mit jeweils einer eigenen Kategorie:

Item {
    id: panel

    visible: true

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

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

Anstatt sicherzustellen, dass alle Einstellungen in der Anwendung eindeutige Namen haben, können die Einstellungen in eindeutige Kategorien unterteilt werden, die dann Einstellungen mit denselben Namen enthalten können, die in anderen Kategorien verwendet werden - ohne Konflikt.

Einstellungen als Singleton

Oft ist es sinnvoll, Einstellungen in jeder QML-Datei als Singleton zur Verfügung zu haben. Ein Beispiel dafür finden Sie in der To Do-Liste. Genauer gesagt ist AppSettings.qml das Singleton, und in der Datei CMakeLists.txt wird die Eigenschaft QT_QML_SINGLETON_TYPE für diese Datei über set_source_files_properties auf TRUE gesetzt.

Anmerkungen

Die aktuelle Implementierung basiert auf QSettings. Dies bringt einige Einschränkungen mit sich, wie z.B. fehlende Änderungsbenachrichtigungen. Das Schreiben eines Einstellungswerts über eine Instanz von Settings aktualisiert den Wert in einer anderen Settings-Instanz nicht, selbst wenn sie sich auf dieselbe Einstellung in derselben Kategorie beziehen.

Die Informationen werden in der Systemregistrierung unter Windows und in XML-Einstellungsdateien unter macOS gespeichert. Auf anderen Unix-Systemen werden, in Ermangelung eines Standards, INI-Textdateien verwendet. Siehe QSettings für weitere Details.

Siehe auch QSettings.

Eigenschaft Dokumentation

category : string

Diese Eigenschaft enthält den Namen der Einstellungskategorie.

Kategorien können verwendet werden, um verwandte Einstellungen zusammenzufassen.

Siehe auch QSettings::group.


location : url

Diese Eigenschaft enthält den Pfad zu der Einstellungsdatei. Wenn die Datei noch nicht vorhanden ist, wird sie erstellt.

Wenn diese Eigenschaft leer ist (Standardeinstellung), wird QSettings::defaultFormat() verwendet. Andernfalls wird QSettings::IniFormat verwendet.

Siehe auch QSettings::fileName, QSettings::defaultFormat, und QSettings::IniFormat.


Methode Dokumentation

setValue(string key, var value)

Setzt den Wert der Einstellung key auf value. Wenn der Schlüssel bereits existiert, wird der vorherige Wert überschrieben.

Siehe auch value() und QSettings::setValue.


sync()

Schreibt alle nicht gespeicherten Änderungen in den permanenten Speicher und lädt alle Einstellungen neu, die in der Zwischenzeit von einer anderen Anwendung geändert wurden.

Diese Funktion wird automatisch aus dem Destruktor von QSettings und von der Ereignisschleife in regelmäßigen Abständen aufgerufen, so dass Sie sie normalerweise nicht selbst aufrufen müssen.

Siehe auch QSettings::sync.


var value(string key, var defaultValue)

Gibt den Wert für die Einstellung key zurück. Existiert die Einstellung nicht, wird defaultValue zurückgegeben.

Siehe auch setValue() und 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.