QSettings Class
La classe QSettings permet de définir des paramètres d'application persistants et indépendants de la plateforme. En savoir plus...
| En-tête : | #include <QSettings> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite de : | QObject |
- Liste de tous les membres, y compris les membres hérités
- QSettings fait partie de la catégorie « Entrée/Sortie et réseau ».
Remarque : toutes les fonctions de cette classe sont réentrantes.
Remarque : ces fonctions sont également sûres pour les threads:
- registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity)
Types publics
| enum | Format { NativeFormat, Registry32Format, Registry64Format, IniFormat, WebLocalStorageFormat, …, InvalidFormat } |
| ReadFunc | |
| enum | Scope { UserScope, SystemScope } |
| SettingsMap | |
| enum | Status { NoError, AccessError, FormatError } |
| WriteFunc |
Fonctions publiques
| QSettings(QObject *parent = nullptr) | |
| QSettings(QSettings::Scope scope, QObject *parent = nullptr) | |
| QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr) | |
| QSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr) | |
| QSettings(QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr) | |
| QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr) | |
| virtual | ~QSettings() |
| QStringList | allKeys() const |
| QString | applicationName() const |
| void | beginGroup(QAnyStringView prefix) |
| int | beginReadArray(QAnyStringView prefix) |
| void | beginWriteArray(QAnyStringView prefix, int size = -1) |
| QStringList | childGroups() const |
| QStringList | childKeys() const |
| void | clear() |
| bool | contains(QAnyStringView key) const |
| void | endArray() |
| void | endGroup() |
| bool | fallbacksEnabled() const |
| QString | fileName() const |
| QSettings::Format | format() const |
| QString | group() const |
| bool | isAtomicSyncRequired() const |
| bool | isWritable() const |
| QString | organizationName() const |
| void | remove(QAnyStringView key) |
| QSettings::Scope | scope() const |
| void | setArrayIndex(int i) |
| void | setAtomicSyncRequired(bool enable) |
| void | setFallbacksEnabled(bool b) |
| void | setValue(QAnyStringView key, const QVariant &value) |
| QSettings::Status | status() const |
| void | sync() |
| QVariant | value(QAnyStringView key) const |
| QVariant | value(QAnyStringView key, const QVariant &defaultValue) const |
Membres publics statiques
| QSettings::Format | defaultFormat() |
| QSettings::Format | registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive) |
| void | setDefaultFormat(QSettings::Format format) |
| void | setPath(QSettings::Format format, QSettings::Scope scope, const QString &path) |
Fonctions protégées réimplémentées
| virtual bool | event(QEvent *event) override |
Description détaillée
Les utilisateurs s'attendent généralement à ce qu'une application mémorise ses paramètres (tailles et positions des fenêtres, options, etc.) d'une session à l'autre. Ces informations sont souvent stockées dans le registre système sous Windows, et dans des fichiers de liste de propriétés sous macOS et iOS. Sur les systèmes Unix, en l'absence de norme, de nombreuses applications (y compris celles de KDE) utilisent des fichiers texte INI.
QSettings est une abstraction de ces technologies, vous permettant d'enregistrer et de restaurer les paramètres d'une application de manière portable. Il prend également en charge custom storage formats.
L’API de QSettings repose sur QVariant, ce qui vous permet d’enregistrer la plupart des types basés sur des valeurs, tels que QString, QRect et QImage, avec un minimum d’effort.
Si vous n'avez besoin que d'une structure en mémoire non persistante, envisagez plutôt d'utiliser QMap<QString, QVariant>.
Utilisation de base
Lors de la création d’un objet QSettings, vous devez passer le nom de votre entreprise ou organisation ainsi que le nom de votre application. Par exemple, si votre produit s’appelle Star Runner et que votre entreprise s’appelle MySoft, vous construirez l’objet QSettings comme suit :
QSettings settings("MySoft", "Star Runner");Les objets QSettings peuvent être créés soit sur la pile, soit sur le tas (c'est-à-dire à l'aide de ` new`). La création et la destruction d'un objet QSettings sont très rapides.
Si vous utilisez QSettings à plusieurs endroits dans votre application, vous pouvez spécifier le nom de l’organisation et celui de l’application à l’aide de ` QCoreApplication::setOrganizationName()` et ` QCoreApplication::setApplicationName()`, puis utiliser le constructeur par défaut de QSettings :
QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("Star Runner");
...
QSettings settings;(Ici, nous spécifions également le domaine Internet de l’organisation. Lorsque le domaine Internet est défini, il est utilisé sous macOS et iOS à la place du nom de l’organisation, car les applications macOS et iOS utilisent traditionnellement les domaines Internet pour s’identifier. Si aucun domaine n’est défini, un faux domaine est dérivé du nom de l’organisation. Voir l’ Platform-Specific Notes ci-dessous pour plus de détails.)
QSettings stocke les paramètres. Chaque paramètre est constitué d’une paire « clé-valeur » ( QString ) qui spécifie le nom du paramètre (la clé) et d’une valeur ( QVariant ) qui stocke les données associées à la clé. Pour écrire un paramètre, utilisez ` setValue()`. Par exemple :
settings.setValue("editor/wrapMargin", 68);Si un paramètre portant la même clé existe déjà, la valeur existante est écrasée par la nouvelle valeur. Pour des raisons d'efficacité, les modifications peuvent ne pas être immédiatement enregistrées dans le stockage permanent. (Vous pouvez à tout moment appeler sync() pour valider vos modifications.)
Vous pouvez récupérer la valeur d’un paramètre à l’aide de ` value()` :
int margin = settings.value("editor/wrapMargin").toInt();S’il n’existe aucun paramètre portant le nom spécifié, QSettings renvoie une valeur nulle QVariant (qui peut être convertie en entier 0). Vous pouvez spécifier une autre valeur par défaut en passant un deuxième argument à value() :
int margin = settings.value("editor/wrapMargin", 80).toInt();Pour vérifier si une clé donnée existe, appelez ` contains()`. Pour supprimer le paramètre associé à une clé, appelez ` remove()`. Pour obtenir la liste de toutes les clés, appelez ` allKeys()`. Pour supprimer toutes les clés, appelez ` clear()`.
QVariant et types d’interface graphique
QVariant faisant partie du module Qt Core, il ne peut pas fournir de fonctions de conversion vers des types de données tels que QColor, QImage et QPixmap, qui font partie de Qt GUI. En d’autres termes, il n’existe pas de fonctions toColor(), toImage() ou toPixmap() dans QVariant.
À la place, vous pouvez utiliser la fonction modèle QVariant::value(). Par exemple :
QSettings settings("MySoft", "Star Runner");
QColor color = settings.value("DataPump/bgcolor").value<QColor>();La conversion inverse (par exemple, de QColor vers QVariant) est automatique pour tous les types de données pris en charge par QVariant, y compris les types liés à l’interface graphique :
QSettings settings("MySoft", "Star Runner");
QColor color = QColor(Qt::blue);
settings.setValue("DataPump/bgcolor", color);Les types personnalisés enregistrés à l’aide de ` qRegisterMetaType()` et disposant d’opérateurs permettant la transmission vers et depuis un ` QDataStream ` peuvent être stockés à l’aide de `QSettings`.
Syntaxe des sections et des clés
Les clés de paramètres peuvent contenir n'importe quel caractère Unicode. Le format de fichier et le système d'exploitation déterminent si elles sont sensibles à la casse ou non. Sous Windows, le registre et les fichiers INI utilisent des clés insensibles à la casse, tandis que les formats définis par l'utilisateur et enregistrés via ` registerFormat()` peuvent être sensibles ou insensibles à la casse. Sur les systèmes Unix, les clés sont toujours sensibles à la casse.
Pour éviter les problèmes de portabilité, respectez ces règles simples :
- Faites toujours référence à la même clé en utilisant la même casse. Par exemple, si vous faites référence à une clé sous le nom « text fonts » à un endroit de votre code, ne l'appelez pas « Text Fonts » ailleurs.
- Évitez les noms de clés identiques à l'exception de la casse. Par exemple, si vous avez une clé nommée « MainWindow », n'essayez pas d'enregistrer une autre clé sous le nom « mainwindow ».
- N’utilisez pas de barres obliques (« / » et « \ ») dans les noms de sections ou de clés ; le caractère « \ » sert à séparer les sous-clés (voir ci-dessous). Sous Windows, les « \ » sont convertis par QSettings en « / », ce qui les rend identiques.
Vous pouvez créer des clés hiérarchiques en utilisant le caractère « / » comme séparateur, à l’instar des chemins d’accès aux fichiers sous Unix. Par exemple :
settings.setValue("mainwindow/size", win->size());
settings.setValue("mainwindow/fullScreen", win->isFullScreen());
settings.setValue("outputpanel/visible", panel->isVisible());Si vous souhaitez enregistrer ou restaurer de nombreux paramètres avec le même préfixe, vous pouvez spécifier ce préfixe à l’aide de ` beginGroup()` et appeler ` endGroup()` à la fin. Voici à nouveau le même exemple, mais cette fois en utilisant le mécanisme de groupe :
settings.beginGroup("mainwindow");
settings.setValue("size", win->size());
settings.setValue("fullScreen", win->isFullScreen());
settings.endGroup();
settings.beginGroup("outputpanel");
settings.setValue("visible", panel->isVisible());
settings.endGroup();Si un groupe est défini à l’aide de beginGroup(), le comportement de la plupart des fonctions change en conséquence. Les groupes peuvent être définis de manière récursive.
Outre les groupes, QSettings prend également en charge le concept de « tableau ». Voir beginReadArray() et beginWriteArray() pour plus de détails.
Mécanisme de repli
Supposons que vous ayez créé un objet QSettings avec le nom d’organisation MySoft et le nom d’application Star Runner. Lorsque vous recherchez une valeur, jusqu’à quatre emplacements sont parcourus dans cet ordre :
- un emplacement spécifique à l’utilisateur pour l’application Star Runner
- un emplacement spécifique à l’utilisateur pour toutes les applications de MySoft
- un emplacement à l'échelle du système pour l'application Star Runner
- un emplacement système pour toutes les applications de MySoft
(Consultez la section « Platform-Specific Notes » ci-dessous pour savoir où se trouvent ces emplacements sur les différentes plateformes prises en charge par Qt.)
Si une clé est introuvable dans le premier emplacement, la recherche se poursuit dans le deuxième emplacement, et ainsi de suite. Cela vous permet de stocker des paramètres à l’échelle du système ou de l’organisation et de les remplacer au cas par cas, par utilisateur ou par application. Pour désactiver ce mécanisme, appelez setFallbacksEnabled(false).
Bien que les clés des quatre emplacements soient accessibles en lecture, seul le premier fichier (l’emplacement spécifique à l’utilisateur pour l’application en question) est accessible en écriture. Pour écrire dans l’un des autres fichiers, omettez le nom de l’application et/ou spécifiez QSettings::SystemScope (par opposition à QSettings::UserScope, la valeur par défaut).
Voyons cela avec un exemple :
QSettings obj1("MySoft", "Star Runner");
QSettings obj2("MySoft");
QSettings obj3(QSettings::SystemScope, "MySoft", "Star Runner");
QSettings obj4(QSettings::SystemScope, "MySoft");Le tableau ci-dessous récapitule quels objets QSettings accèdent à quel emplacement. «X » signifie que l’emplacement est l’emplacement principal associé à l’objet QSettings et qu’il est utilisé à la fois pour la lecture et pour l’écriture ; « o » signifie que l’emplacement est utilisé comme solution de secours lors de la lecture.
| Emplacements | obj1 | obj2 | obj3 | obj4 |
|---|---|---|---|---|
| 1. Utilisateur, application | X | |||
| 2. Utilisateur, organisation | o | X | ||
| 3. Système, application | o | X | ||
| 4. Système, organisation | o | o | o | X |
L'intérêt de ce mécanisme réside dans le fait qu'il fonctionne sur toutes les plateformes prises en charge par Qt et qu'il vous offre une grande flexibilité, sans que vous ayez à spécifier de noms de fichiers ni de chemins d'accès au registre.
Si vous souhaitez utiliser des fichiers INI sur toutes les plateformes plutôt que l'API native, vous pouvez passer QSettings::IniFormat en premier argument au constructeur de QSettings, suivi de la portée, du nom de l'organisation et du nom de l'application :
Notez que les fichiers INI ne font pas la distinction entre les données numériques et les chaînes de caractères utilisées pour les encoder ; ainsi, les valeurs écrites sous forme de nombres seront lues comme des chaînes de caractères ( QString). La valeur numérique peut être récupérée à l’aide des fonctions QString::toInt(), QString::toDouble() et des fonctions associées.
Restauration de l’état d’une application GUI
QSettings est souvent utilisé pour stocker l’état d’une application GUI. L’exemple suivant illustre comment utiliser QSettings pour enregistrer et restaurer la géométrie de la fenêtre principale d’une application.
void MainWindow::writeSettings()
{
QSettings settings("Moose Soft", "Clipper");
settings.beginGroup("MainWindow");
settings.setValue("geometry", saveGeometry());
settings.endGroup();
}
void MainWindow::readSettings()
{
QSettings settings("Moose Soft", "Clipper");
settings.beginGroup("MainWindow");
const auto geometry = settings.value("geometry", QByteArray()).toByteArray();
if (geometry.isEmpty())
setGeometry(200, 200, 400, 400);
else
restoreGeometry(geometry);
settings.endGroup();
}Consultez la section Géométrie des fenêtres pour comprendre pourquoi il est préférable d’appeler QWidget::resize() et QWidget::move() plutôt que QWidget::setGeometry() pour restaurer la géométrie d’une fenêtre.
Les fonctions readSettings() et writeSettings() doivent être appelées depuis le constructeur de la fenêtre principale et le gestionnaire d'événement close comme suit :
MainWindow::MainWindow()
{
...
readSettings();
}
void MainWindow::closeEvent(QCloseEvent *event)
{
if (userReallyWantsToQuit()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
}Accès simultané aux paramètres depuis plusieurs threads ou processus
QSettings est réentrant. Cela signifie que vous pouvez utiliser simultanément des objets QSettings distincts dans différents threads. Cette garantie s'applique même lorsque les objets QSettings font référence aux mêmes fichiers sur le disque (ou aux mêmes entrées dans le registre système). Si un paramètre est modifié via un objet QSettings, la modification sera immédiatement visible dans tous les autres objets QSettings qui opèrent sur le même emplacement et qui résident dans le même processus.
QSettings peut être utilisé en toute sécurité depuis différents processus (qui peuvent être différentes instances de votre application s'exécutant simultanément ou des applications totalement différentes) pour lire et écrire dans les mêmes emplacements système, à condition que certaines conditions soient remplies. Pour ` QSettings::IniFormat`, il utilise un verrouillage consultatif des fichiers et un algorithme de fusion intelligent afin de garantir l’intégrité des données. Pour que cela fonctionne, le fichier de configuration accessible en écriture doit être un fichier ordinaire et se trouver dans un répertoire où l’utilisateur actuel peut créer de nouveaux fichiers temporaires. Si ce n’est pas le cas, il faut utiliser ` setAtomicSyncRequired()` pour désactiver cette mesure de sécurité.
Notez que la fonction ` sync()` importe les modifications apportées par d’autres processus (en plus d’enregistrer les modifications issues de ce `QSettings`).
Remarques spécifiques à la plateforme
Emplacements de stockage des paramètres de l’application
Comme mentionné dans la section Fallback Mechanism, QSettings stocke les paramètres d’une application dans un maximum de quatre emplacements, selon que ces paramètres sont spécifiques à l’utilisateur ou à l’ensemble du système, et qu’ils concernent une application en particulier ou l’ensemble de l’organisation. Par souci de simplicité, nous supposons que l’organisation s’appelle MySoft et que l’application s’appelle Star Runner.
Sur les systèmes Unix, si le format de fichier est NativeFormat, les fichiers suivants sont utilisés par défaut :
$HOME/.config/MySoft/Star Runner.conf$HOME/.config/MySoft.conf- pour chaque répertoire <dir> dans $XDG_CONFIG_DIRS :
<dir>/MySoft/Star Runner.conf - pour chaque répertoire <dir> présent dans $XDG_CONFIG_DIRS :
<dir>/MySoft.conf
Remarque : si XDG_CONFIG_DIRS n’est pas défini, la valeur par défaut /etc/xdg est utilisée.
Sous macOS et iOS, si le format de fichier est NativeFormat, ces fichiers sont utilisés par défaut :
$HOME/Library/Preferences/com.MySoft.Star Runner.plist$HOME/Library/Preferences/com.MySoft.plist/Library/Preferences/com.MySoft.Star Runner.plist/Library/Preferences/com.MySoft.plist
Sous Windows, les paramètres d'NativeFormat sont stockés dans les chemins de registre suivants :
HKEY_CURRENT_USER\Software\MySoft\Star RunnerHKEY_CURRENT_USER\Software\MySoft\OrganizationDefaultsHKEY_LOCAL_MACHINE\Software\MySoft\Star RunnerHKEY_LOCAL_MACHINE\Software\MySoft\OrganizationDefaults
Remarque : sous Windows, pour les programmes 32 bits s'exécutant en mode WOW64, les paramètres sont stockés dans le chemin de registre suivant : HKEY_LOCAL_MACHINE\Software\WOW6432node.
Si le format de fichier est NativeFormat, il s'agit du fichier « Settings/MySoft/Star Runner.conf » situé dans le répertoire d'installation de l'application.
Si le format de fichier est IniFormat, les fichiers suivants sont utilisés sous Unix, macOS et iOS :
$HOME/.config/MySoft/Star Runner.ini$HOME/.config/MySoft.ini- pour chaque répertoire <dir> dans $XDG_CONFIG_DIRS :
<dir>/MySoft/Star Runner.ini - pour chaque répertoire <dir> dans $XDG_CONFIG_DIRS :
<dir>/MySoft.ini
Remarque : si XDG_CONFIG_DIRS n’est pas défini, la valeur par défaut /etc/xdg est utilisée.
Sous Windows, les fichiers suivants sont utilisés :
FOLDERID_RoamingAppData\MySoft\Star Runner.iniFOLDERID_RoamingAppData\MySoft.iniFOLDERID_ProgramData\MySoft\Star Runner.iniFOLDERID_ProgramData\MySoft.ini
Les identifiants préfixés par FOLDERID_ sont des listes d’identifiants d’éléments spéciaux à transmettre à la fonction API Win32 SHGetKnownFolderPath() afin d’obtenir le chemin d’accès correspondant.
FOLDERID_RoamingAppData pointe généralement vers C:\Users\User Name\AppData\Roaming, également indiqué par la variable d’environnement %APPDATA%.
FOLDERID_ProgramData pointe généralement vers C:\ProgramData.
Si le format de fichier est IniFormat, il s'agit de « Settings/MySoft/Star Runner.ini » dans le répertoire d'installation de l'application.
Les chemins d'accès aux fichiers .ini et .conf peuvent être modifiés à l'aide de la fonction setPath(). Sous Unix, macOS et iOS, l'utilisateur peut les remplacer en définissant la variable d'environnement XDG_CONFIG_HOME; voir setPath() pour plus de détails.
Accès direct aux fichiers INI et .plist
Il arrive parfois que vous souhaitiez accéder à des paramètres stockés dans un fichier ou un chemin de registre spécifique. Sur toutes les plateformes, si vous souhaitez lire directement un fichier INI, vous pouvez utiliser le constructeur QSettings qui prend un nom de fichier comme premier argument et passer QSettings::IniFormat comme deuxième argument. Par exemple :
Vous pouvez ensuite utiliser l’objet QSettings pour lire et écrire des paramètres dans le fichier.
Sous macOS et iOS, vous pouvez accéder aux fichiers de liste de propriétés ( .plist ) en passant QSettings::NativeFormat en tant que deuxième argument. Par exemple :
Accès direct au registre Windows
Sous Windows, QSettings vous permet d’accéder aux paramètres qui ont été écrits avec QSettings (ou aux paramètres dans un format pris en charge, par exemple des données de type chaîne de caractères) dans le registre système. Pour ce faire, il suffit de créer un objet QSettings en lui fournissant un chemin d’accès dans le registre et QSettings::NativeFormat.
Par exemple :
Toutes les entrées de registre apparaissant sous le chemin spécifié peuvent être lues ou écrites via l’objet QSettings comme d’habitude (en utilisant des barres obliques au lieu de barres obliques inversées). Par exemple :
settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0);Notez que le caractère « barre oblique inversée » est, comme mentionné, utilisé par QSettings pour séparer les sous-clés. Par conséquent, vous ne pouvez pas lire ni écrire d’entrées du registre Windows contenant des barres obliques ou des barres obliques inversées ; vous devez utiliser une API Windows native si vous en avez besoin.
Accès aux paramètres courants du registre sous Windows
Sous Windows, une clé peut comporter à la fois une valeur et des sous-clés. On accède à sa valeur par défaut en utilisant « Default » ou « . » à la place d'une sous-clé :
settings.setValue("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy", "Milkyway");
settings.setValue("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy\\Sun", "OurStar");
settings.value("HKEY_CURRENT_USER\\MySoft\\Star Runner\\Galaxy\\Default"); // returns "Milkyway"Sur les plateformes autres que Windows, « Default » et « . » seraient traités comme des sous-clés normales.
Limitations liées aux plateformes
Bien que QSettings s'efforce d'atténuer les différences entre les différentes plateformes prises en charge, il existe tout de même quelques différences dont vous devez tenir compte lors du portage de votre application :
- Le registre système de Windows présente les limitations suivantes : une sous-clé ne doit pas dépasser 255 caractères, la valeur d’une entrée ne doit pas dépasser 16 383 caractères, et l’ensemble des valeurs d’une clé ne doit pas dépasser 65 535 caractères. Une solution pour contourner ces limitations consiste à stocker les paramètres en utilisant l’ IniFormat au lieu de l’ NativeFormat.
- Sous Windows, lorsque le registre système de Windows est utilisé, QSettings ne conserve pas le type d’origine de la valeur. Par conséquent, le type de la valeur peut changer lorsqu’une nouvelle valeur est définie. Par exemple, une valeur de type «
REG_EXPAND_SZ» deviendra «REG_SZ». - Sous macOS et iOS, la fonction allKeys() renvoie des clés supplémentaires pour les paramètres globaux qui s’appliquent à toutes les applications. Ces clés peuvent être lues à l’aide de value(), mais ne peuvent pas être modifiées, seulement masquées. L’appel de setFallbacksEnabled(false) masque ces paramètres globaux.
- Sous macOS et iOS, l’API CFPreferences utilisée par QSettings attend des noms de domaine Internet plutôt que des noms d’organisation. Afin de fournir une API uniforme, QSettings dérive un faux nom de domaine à partir du nom de l’organisation (à moins que ce dernier ne soit déjà un nom de domaine, par exemple OpenOffice.org). L’algorithme ajoute « .com » à la fin du nom de l’entreprise et remplace les espaces et autres caractères non valides par des tirets. Si vous souhaitez spécifier un nom de domaine différent, appelez QCoreApplication::setOrganizationDomain(), QCoreApplication::setOrganizationName() et QCoreApplication::setApplicationName() dans votre fonction
main(), puis utilisez le constructeur par défaut de QSettings. Une autre solution consiste à utiliser des directives de préprocesseur, par exemple : - Sous macOS, les autorisations d’accès aux paramètres n’appartenant pas à l’utilisateur actuel (c’est-à-dire SystemScope) ont changé à partir de la version 10.7 (Lion). Avant cette version, les utilisateurs disposant de droits d’administrateur pouvaient y accéder. Sous 10.7 et 10.8 (Mountain Lion), seul l’utilisateur root le peut. Cependant, la version 10.9 (Mavericks) modifie à nouveau cette règle, mais uniquement pour le format natif (fichiers plist).
Considérations de sécurité
La classe utilise QDataStream pour désérialiser les données dans QVariant. Elle présente donc les mêmes security consideration as QDataStream et ne doit être utilisée qu’avec des données d’entrée fiables.
Voir également ` QVariant ` et ` QSessionManager`.
Documentation sur les types de membres
enum QSettings::Format
Ce type d'énumération spécifie le format de stockage utilisé par QSettings.
| Constante | Valeur | Description |
|---|---|---|
QSettings::NativeFormat | 0 | Enregistrer les paramètres en utilisant le format de stockage le plus approprié pour la plateforme. Sous Windows, il s'agit du registre système ; sous macOS et iOS, il s'agit de l'API CFPreferences ; sous Unix, il s'agit de fichiers de configuration textuels au format INI. |
QSettings::Registry32Format | 2 | Windows uniquement : accède explicitement au registre système 32 bits depuis une application 64 bits s'exécutant sous Windows 64 bits. Sous Windows 32 bits ou depuis une application 32 bits sous Windows 64 bits, cela fonctionne de la même manière que si l'on spécifiait NativeFormat. Cette valeur d'énumération a été ajoutée dans Qt 5.7. |
QSettings::Registry64Format | 3 | Windows uniquement : accède explicitement au registre système 64 bits depuis une application 32 bits s'exécutant sous Windows 64 bits. Sous Windows 32 bits ou depuis une application 64 bits sous Windows 64 bits, cela fonctionne de la même manière que si l’on spécifiait NativeFormat. Cette valeur d’énumération a été ajoutée dans Qt 5.7. |
QSettings::IniFormat | 1 | Enregistrer les paramètres dans des fichiers INI. Notez que les fichiers INI ne font pas la distinction entre les données numériques et les chaînes utilisées pour les encoder ; ainsi, les valeurs écrites sous forme de nombres seront lues comme QString. |
QSettings::WebLocalStorageFormat | 4 | WASM uniquement : enregistrez les paramètres dans `window.localStorage` pour l’origine actuelle. Si les cookies ne sont pas autorisés, le système revient au format INI. Cela offre jusqu’à 5 Mio de stockage par origine, mais l’accès est synchrone et JSPI n’est pas requis. |
QSettings::WebIndexedDBFormat | 5 | WASM uniquement : stocke les paramètres dans une base de données indexée (IndexedDB) pour l’origine actuelle. Si les cookies ne sont pas autorisés, le système revient au format INI. Cette option nécessite JSPI, mais offre davantage d’espace de stockage que WebLocalStorageFormat. |
QSettings::InvalidFormat | 16 | Valeur spéciale renvoyée par ` registerFormat()` (). |
Sous Unix, NativeFormat et IniFormat ont la même signification, à l’exception de l’extension de fichier (.conf pour NativeFormat, .ini pour IniFormat).
Le format de fichier INI est un format Windows pris en charge par Qt sur toutes les plateformes. En l’absence de norme INI, nous essayons de suivre les pratiques de Microsoft, à l’exception des points suivants :
- Si vous stockez des types que QVariant ne peut pas convertir en QString (par exemple, QPoint, QRect et QSize), Qt utilise une syntaxe basée sur
@pour encoder le type. Par exemple :pos = @QPoint(100 100)Afin de minimiser les problèmes de compatibilité, tout «
@» qui n’apparaît pas en première position dans la valeur ou qui n’est pas suivi d’un type Qt (Point,Rect,Size, etc.) est traité comme un caractère normal. - Bien que la barre oblique inversée soit un caractère spécial dans les fichiers INI, la plupart des applications Windows n'échappent pas les barres obliques inversées (
\) dans les chemins d'accès aux fichiers :windir = C:\WindowsQSettings traite toujours la barre oblique inversée comme un caractère spécial et ne fournit aucune API pour lire ou écrire de telles entrées.
- Le format de fichier INI impose des restrictions strictes sur la syntaxe d'une clé. Qt contourne cette limitation en utilisant
%comme caractère d'échappement dans les clés. De plus, si vous enregistrez un paramètre de niveau supérieur (une clé ne contenant pas de barres obliques, par exemple « someKey »), celui-ci apparaîtra dans la section « General » du fichier INI. Pour éviter d’écraser d’autres clés, si vous enregistrez une valeur à l’aide d’une clé telle que « General/someKey », celle-ci se trouvera dans la section « %General », et non dans la section « General ». - À l’instar de la plupart des implémentations actuelles, QSettings part du principe que les valeurs du fichier INI sont encodées en UTF-8. Cela signifie que les valeurs seront décodées en tant qu’entrées encodées en UTF-8 et réécrites au format UTF-8. Afin de préserver la rétrocompatibilité avec les anciennes versions de Qt, les clés du fichier INI sont écrites au format %-encoded, mais peuvent être lues aussi bien au format %-encoded qu’au format UTF-8.
Compatibilité avec les anciennes versions de Qt
Veuillez noter que ce comportement diffère de celui de la fonction ` QSettings ` dans les versions de Qt antérieures à Qt 6. Les fichiers INI créés avec Qt 5 ou une version antérieure sont toutefois entièrement lisibles par une application basée sur Qt 6 (à moins qu’un codec INI différent de `utf8` n’ait été défini). En revanche, les fichiers INI créés avec Qt 6 ne seront lisibles par les anciennes versions de Qt que si vous définissez « iniCodec » sur un codec de texte UTF-8.
Voir également registerFormat() et setPath().
QSettings::ReadFunc
Définition de type (typedef) pour un pointeur vers une fonction ayant la signature suivante :
ReadFunc est utilisé dans registerFormat() comme pointeur vers une fonction qui lit un ensemble de paires clé/valeur. ReadFunc doit lire toutes les options en un seul passage et renvoyer tous les paramètres dans le conteneur SettingsMap, qui est initialement vide.
Voir également WriteFunc et registerFormat().
enum QSettings::Scope
Cette énumération indique si les paramètres sont propres à l'utilisateur ou partagés par tous les utilisateurs d'un même système.
| Constante | Valeur | Description |
|---|---|---|
QSettings::UserScope | 0 | Enregistrer les paramètres dans un emplacement spécifique à l'utilisateur actuel (par exemple, dans le répertoire personnel de l'utilisateur). |
QSettings::SystemScope | 1 | Enregistrer les paramètres dans un emplacement global, de sorte que tous les utilisateurs de la même machine aient accès au même ensemble de paramètres. |
Voir également setPath().
QSettings::SettingsMap
Définition de type pour QMap<QString, QVariant>.
Voir également registerFormat().
enum QSettings::Status
Les valeurs d'état suivantes sont possibles :
| Constante | Valeur | Description |
|---|---|---|
QSettings::NoError | 0 | Aucune erreur ne s'est produite. |
QSettings::AccessError | 1 | Une erreur d'accès s'est produite (par exemple, tentative d'écriture dans un fichier en lecture seule). |
QSettings::FormatError | 2 | Une erreur de format s'est produite (par exemple, chargement d'un fichier INI mal formé). |
Voir aussi status().
QSettings::WriteFunc
Définition de type (typedef) pour un pointeur vers une fonction présentant la signature suivante :
WriteFunc est utilisé dans registerFormat() comme pointeur vers une fonction qui écrit un ensemble de paires clé/valeur. La fonction WriteFunc n'est appelée qu'une seule fois ; vous devez donc afficher les paramètres en une seule fois.
Voir également ReadFunc et registerFormat().
Documentation sur les fonctions membres
[explicit] QSettings::QSettings(QObject *parent = nullptr)
Crée un objet QSettings permettant d'accéder aux paramètres de l'application et de l'organisation définis précédemment à l'aide des appels aux fonctions QCoreApplication::setOrganizationName(), QCoreApplication::setOrganizationDomain() et QCoreApplication::setApplicationName().
La portée est QSettings::UserScope et le format est defaultFormat() (QSettings::NativeFormat par défaut). Utilisez setDefaultFormat() avant d'appeler ce constructeur pour modifier le format par défaut utilisé par celui-ci.
Le code
QSettings settings("Moose Soft", "Facturo-Pro");est équivalent à
QCoreApplication::setOrganizationName("Moose Soft");
QCoreApplication::setApplicationName("Facturo-Pro");
QSettings settings;Si QCoreApplication::setOrganizationName() et QCoreApplication::setApplicationName() n’ont pas été appelés au préalable, l’objet QSettings ne pourra ni lire ni écrire de paramètres, et status() renverra AccessError.
Vous devez fournir à la fois le domaine (utilisé par défaut sur macOS et iOS) et le nom (utilisé par défaut ailleurs), bien que le code s'adapte si vous n'en fournissez qu'un seul, qui sera alors utilisé (sur toutes les plateformes), ce qui va à l'encontre de la nomenclature habituelle du fichier sur les plateformes où ce n'est pas la valeur par défaut.
Voir également QCoreApplication::setOrganizationName(), QCoreApplication::setOrganizationDomain(), QCoreApplication::setApplicationName() et setDefaultFormat().
[explicit] QSettings::QSettings(QSettings::Scope scope, QObject *parent = nullptr)
Crée un objet QSettings de la même manière que QSettings(QObject *parent), mais avec l'scope.
Voir aussi QSettings(QObject *parent).
QSettings::QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)
Crée un objet QSettings permettant d’accéder aux paramètres stockés dans le fichier nommé fileName, dont le parent est parent. Si le fichier n’existe pas encore, il est créé.
Si format correspond à QSettings::NativeFormat, la signification de fileName dépend de la plateforme. Sous Unix, fileName est le nom d’un fichier INI. Sous macOS et iOS, fileName est le nom d’un fichier .plist. Sous Windows, fileName est un chemin d’accès dans le registre système.
Si format est égal à QSettings::IniFormat, alors fileName est le nom d’un fichier INI.
Avertissement : cette fonction est fournie à titre de commodité. Elle fonctionne correctement pour accéder aux fichiers INI ou aux fichiers « .plist » générés par Qt, mais peut échouer avec certaines syntaxes présentes dans des fichiers de ce type créés par d’autres programmes. En particulier, tenez compte des limitations suivantes :
- QSettings ne permet pas de lire les entrées « chemin » des fichiers INI, c'est-à-dire les entrées contenant des barres obliques non échappées. (En effet, ces entrées sont ambiguës et ne peuvent pas être résolues automatiquement.)
- Dans les fichiers INI, QSettings utilise le caractère «
@» comme métacaractère dans certains contextes, pour encoder des types de données spécifiques à Qt (par exemple, `@Rect`), et peut donc l'interpréter de manière erronée lorsqu'il apparaît dans des fichiers INI purs.
Voir également fileName().
[explicit] QSettings::QSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
Crée un objet QSettings permettant d'accéder aux paramètres de l'application nommée « application » appartenant à l'organisation « organization » et dont le parent est « parent ».
Exemple :
QSettings settings("Moose Tech", "Facturo-Pro");La portée est définie sur QSettings::UserScope, et le format est défini sur QSettings::NativeFormat (c'est-à-dire que l'appel de setDefaultFormat() avant l'appel de ce constructeur n'a aucun effet).
Voir également setDefaultFormat() et Fallback Mechanism.
QSettings::QSettings(QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
Crée un objet QSettings permettant d'accéder aux paramètres de l'application nommée « application » appartenant à l'organisation « organization » et dont le parent est « parent ».
Si scope correspond à QSettings::UserScope, l’objet QSettings recherche d’abord les paramètres spécifiques à l’utilisateur, avant de se rabattre sur les paramètres système. Si scope correspond à QSettings::SystemScope, l’objet QSettings ignore les paramètres spécifiques à l’utilisateur et donne accès aux paramètres système.
Le format de stockage est défini sur QSettings::NativeFormat (c'est-à-dire que l'appel de setDefaultFormat() avant d'appeler ce constructeur n'a aucun effet).
Si aucun nom d'application n'est fourni, l'objet QSettings n'accédera qu'à l'locations à l'échelle de l'organisation.
Voir également setDefaultFormat().
QSettings::QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
Crée un objet QSettings permettant d'accéder aux paramètres de l'application nommée « application » appartenant à l'organisation « organization » et dont le parent est « parent ».
Si scope correspond à QSettings::UserScope, l’objet QSettings recherche d’abord les paramètres spécifiques à l’utilisateur, avant de se rabattre sur les paramètres système. Si scope correspond à QSettings::SystemScope, l’objet QSettings ignore les paramètres spécifiques à l’utilisateur et donne accès aux paramètres système.
Si format correspond à QSettings::NativeFormat, l’API native est utilisée pour stocker les paramètres. Si format correspond à QSettings::IniFormat, le format INI est utilisé.
Si aucun nom d’application n’est fourni, l’objet `QSettings` n’accédera qu’au fichier ` locations` à l’échelle de l’organisation.
[virtual noexcept] QSettings::~QSettings()
Supprime l'objet « QSettings ».
Toute modification non enregistrée sera finalement enregistrée dans la mémoire permanente.
Voir aussi sync().
QStringList QSettings::allKeys() const
Renvoie une liste de toutes les clés, y compris les sous-clés, qui peuvent être lues à l'aide de l'objet ` QSettings `.
Exemple :
QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList keys = settings.allKeys();
// keys: ["fridge/color", "fridge/size", "sofa", "tv"]Si un groupe est défini à l’aide de la fonction beginGroup(), seules les clés de ce groupe sont renvoyées, sans le préfixe du groupe :
settings.beginGroup("fridge");
keys = settings.allKeys();
// keys: ["color", "size"]Voir également childGroups() et childKeys().
QString QSettings::applicationName() const
Renvoie le nom de l'application utilisé pour enregistrer les paramètres.
Voir également QCoreApplication::applicationName(), format(), scope() et organizationName().
void QSettings::beginGroup(QAnyStringView prefix)
Ajoute prefix au groupe actuel.
Le groupe actuel est automatiquement ajouté au début de toutes les clés spécifiées dans « QSettings ». De plus, les fonctions de requête telles que « childGroups() », « childKeys() » et « allKeys() » s’appuient sur ce groupe. Par défaut, aucun groupe n’est défini.
Les groupes sont utiles pour éviter de saisir sans cesse les mêmes chemins d’accès aux paramètres. Par exemple :
settings.beginGroup("mainwindow");
settings.setValue("size", win->size());
settings.setValue("active", win->isActive());
settings.endGroup();
settings.beginGroup("outputpanel");
settings.setValue("visible", panel->isVisible());
settings.endGroup();Cela permettra de définir la valeur de trois paramètres :
mainwindow/sizemainwindow/activeoutputpanel/visible
Appelez endGroup() pour réinitialiser le groupe actuel à son état antérieur à l’appel correspondant à beginGroup(). Les groupes peuvent être imbriqués.
Remarque : dans les versions de Qt antérieures à la version 6.4, cette fonction prenait en paramètre ` QString`, et non ` QAnyStringView`.
Voir également ` endGroup()` et ` group()`.
int QSettings::beginReadArray(QAnyStringView prefix)
Ajoute prefix au groupe actuel et commence la lecture à partir d'un tableau. Renvoie la taille du tableau.
Exemple :
struct Login {
QString userName;
QString password;
};
QList<Login> logins;
//...
void some_function()
{
//...
QSettings settings;
int size = settings.beginReadArray("logins");
for (int i = 0; i < size; ++i) {
settings.setArrayIndex(i);
Login login;
login.userName = settings.value("userName").toString();
login.password = settings.value("password").toString();
logins.append(login);
}
settings.endArray();
//...
}Utilisez d'abord la fonction ` beginWriteArray()` pour écrire le tableau.
Remarque : dans les versions de Qt antérieures à la version 6.4, cette fonction prenait en paramètre ` QString`, et non ` QAnyStringView`.
Voir également beginWriteArray(), endArray() et setArrayIndex().
void QSettings::beginWriteArray(QAnyStringView prefix, int size = -1)
Ajoute prefix au groupe actuel et commence à écrire un tableau de taille size. Si size est égal à -1 (valeur par défaut), la taille est déterminée automatiquement en fonction des index des entrées écrites.
Si un certain ensemble de clés revient souvent, vous pouvez utiliser des tableaux pour vous simplifier la vie. Par exemple, supposons que vous souhaitiez enregistrer une liste de longueur variable de noms d’utilisateurs et de mots de passe. Vous pourriez alors écrire :
struct Login {
QString userName;
QString password;
};
QList<Login> logins;
//...
void some_function()
{
//...
QSettings settings;
settings.beginWriteArray("logins");
for (qsizetype i = 0; i < logins.size(); ++i) {
settings.setArrayIndex(i);
settings.setValue("userName", logins.at(i).userName);
settings.setValue("password", logins.at(i).password);
}
settings.endArray();
//...
}Les clés générées prendront la forme
logins/sizelogins/1/userNamelogins/1/passwordlogins/2/userNamelogins/2/passwordlogins/3/userNamelogins/3/password- ...
Pour relire un tableau, utilisez beginReadArray().
Remarque : dans les versions de Qt antérieures à la version 6.4, cette fonction prenait en paramètre ` QString`, et non ` QAnyStringView`.
Voir également beginReadArray(), endArray() et setArrayIndex().
QStringList QSettings::childGroups() const
Renvoie une liste de tous les groupes de niveau supérieur contenant des clés pouvant être lues à l'aide de l'objet « QSettings ».
Exemple :
QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList groups = settings.childGroups();
// groups: ["fridge"]Si un groupe est défini à l'aide de la fonction beginGroup(), les clés de premier niveau de ce groupe sont renvoyées, sans le préfixe du groupe.
settings.beginGroup("fridge");
groups = settings.childGroups();
// groups: []Vous pouvez parcourir l'intégralité de la hiérarchie des paramètres en utilisant de manière récursive les méthodes ` childKeys()` et `childGroups()`.
Voir également childKeys() et allKeys().
QStringList QSettings::childKeys() const
Renvoie une liste de toutes les clés de niveau supérieur pouvant être lues à l'aide de l'objet ` QSettings `.
Exemple :
QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList keys = settings.childKeys();
// keys: ["sofa", "tv"]Si un groupe est défini à l'aide de beginGroup(), les clés de niveau supérieur de ce groupe sont renvoyées, sans le préfixe du groupe :
settings.beginGroup("fridge");
keys = settings.childKeys();
// keys: ["color", "size"]Vous pouvez parcourir l'intégralité de la hiérarchie des paramètres à l'aide des fonctions childKeys() et childGroups() de manière récursive.
Voir également childGroups() et allKeys().
void QSettings::clear()
Supprime toutes les entrées de l'emplacement principal associé à cet objet « QSettings ».
Les entrées des emplacements de secours ne sont pas supprimées.
Si vous souhaitez uniquement supprimer les entrées de l'group() actuel, utilisez plutôt remove("").
Voir également remove() et setFallbacksEnabled().
bool QSettings::contains(QAnyStringView key) const
Renvoie « true » s'il existe un paramètre nommé « key » ; renvoie « false » dans le cas contraire.
Si un groupe est défini à l'aide de la fonction beginGroup(), le paramètre key est considéré comme relatif à ce groupe.
La recherche de clés sera sensible ou insensible à la casse selon le format de fichier et le système d’exploitation. Pour éviter les problèmes de portabilité, consultez les règles d’ Section and Key Syntax.
Remarque : dans les versions de Qt antérieures à la version 6.4, cette fonction prenait en paramètre ` QString`, et non ` QAnyStringView`.
Voir également value() et setValue().
[static] QSettings::Format QSettings::defaultFormat()
Renvoie le format de fichier par défaut utilisé pour stocker les paramètres du constructeur de l'QSettings(QObject *). Si aucun format par défaut n'est défini, le format « QSettings::NativeFormat » est utilisé.
Voir également setDefaultFormat() et format().
void QSettings::endArray()
Ferme le tableau créé à l'aide de la fonction beginReadArray() ou beginWriteArray().
Voir également beginReadArray() et beginWriteArray().
void QSettings::endGroup()
Rétablit l'état du groupe tel qu'il était avant l'appel correspondant à la fonction beginGroup().
Exemple :
settings.beginGroup("alpha");
// settings.group() == "alpha"
settings.beginGroup("beta");
// settings.group() == "alpha/beta"
settings.endGroup();
// settings.group() == "alpha"
settings.endGroup();
// settings.group() == ""Voir également beginGroup() et group().
[override virtual protected] bool QSettings::event(QEvent *event)
Réimplémente : QObject::event(QEvent *e).
bool QSettings::fallbacksEnabled() const
Renvoie « true » si les solutions de repli sont activées ; renvoie « false » dans le cas contraire.
Par défaut, les solutions de repli sont activées.
Voir également setFallbacksEnabled().
QString QSettings::fileName() const
Renvoie le chemin d'accès où sont stockés les paramètres définis à l'aide de cet objet ` QSettings `.
Sous Windows, si le format est QSettings::NativeFormat, la valeur renvoyée est un chemin d'accès au registre système, et non un chemin d'accès à un fichier.
Voir également ` isWritable()` et ` format()`.
QSettings::Format QSettings::format() const
Renvoie le format utilisé pour stocker les paramètres.
Voir également defaultFormat(), fileName(), scope(), organizationName() et applicationName().
QString QSettings::group() const
Renvoie le groupe actuel.
Voir également beginGroup() et endGroup().
bool QSettings::isAtomicSyncRequired() const
Renvoie « true » si QSettings n'est autorisé qu'à effectuer une sauvegarde et une relecture atomiques (synchronisation) des paramètres. Renvoie « false » s'il est autorisé à enregistrer directement le contenu des paramètres dans le fichier de configuration.
La valeur par défaut est true.
Voir également setAtomicSyncRequired() et QSaveFile.
bool QSettings::isWritable() const
Renvoie true si les paramètres peuvent être enregistrés à l'aide de cet objet QSettings; renvoie false dans le cas contraire.
L'une des raisons pour lesquelles isWritable() peut renvoyer « false » est que QSettings opère sur un fichier en lecture seule.
Avertissement : cette fonction n’est pas parfaitement fiable, car les droits d’accès au fichier peuvent changer à tout moment.
Voir également fileName(), status() et sync().
QString QSettings::organizationName() const
Renvoie le nom de l'organisation utilisé pour enregistrer les paramètres.
Voir également QCoreApplication::organizationName(), format(), scope() et applicationName().
[static] QSettings::Format QSettings::registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive)
Enregistre un format de stockage personnalisé. En cas de réussite, renvoie une valeur « Format » spécifique qui peut ensuite être transmise au constructeur de ` QSettings `. En cas d'échec, renvoie ` InvalidFormat`.
extension correspond à l’extension de fichier associée au format (sans le « . »).
Les paramètres ` readFunc ` et ` writeFunc ` sont des pointeurs vers des fonctions qui lisent et écrivent un ensemble de paires clé/valeur. Le paramètre ` QIODevice ` des fonctions de lecture et d’écriture est toujours ouvert en mode binaire (c’est-à-dire sans le drapeau ` QIODeviceBase::Text `).
Le paramètre ` caseSensitivity ` spécifie si les clés sont sensibles à la casse ou non. Cela a une incidence lors de la recherche de valeurs à l’aide de ` QSettings`. Par défaut, la casse est prise en compte. Sur les systèmes Unix, ce paramètre doit être ` Qt::CaseSensitive `.
Par défaut, si vous utilisez l’un des constructeurs fonctionnant avec un nom d’organisation et un nom d’application, les emplacements du système de fichiers utilisés sont les mêmes que pour ` IniFormat`. Utilisez ` setPath()` pour spécifier d’autres emplacements.
Exemple :
bool readXmlFile(QIODevice &device, QSettings::SettingsMap &map);
bool writeXmlFile(QIODevice &device, const QSettings::SettingsMap &map);
int main(int argc, char *argv[])
{
const QSettings::Format XmlFormat =
QSettings::registerFormat("xml", readXmlFile, writeXmlFile);
QSettings settings(XmlFormat, QSettings::UserScope, "MySoft",
"Star Runner");
//...
}Remarque : cette fonction est thread-safe.
Voir également setPath().
void QSettings::remove(QAnyStringView key)
Supprime le paramètre « key » ainsi que tous les sous-paramètres de « key ».
Exemple :
QSettings settings;
settings.setValue("ape", 0);
settings.setValue("monkey", 1);
settings.setValue("monkey/sea", 2);
settings.setValue("monkey/doe", 4);
settings.remove("monkey");
QStringList keys = settings.allKeys();
// keys: ["ape"]Notez que si l'un des emplacements de secours contient un paramètre portant la même clé, ce paramètre restera visible après l'appel à remove().
Si key est une chaîne vide, toutes les clés de l’ group() actuel sont supprimées. Par exemple :
QSettings settings;
settings.setValue("ape", 0);
settings.setValue("monkey", 1);
settings.setValue("monkey/sea", 2);
settings.setValue("monkey/doe", 4);
settings.beginGroup("monkey");
settings.remove("");
settings.endGroup();
QStringList keys = settings.allKeys();
// keys: ["ape"]La recherche de clés peut être sensible ou insensible à la casse selon le format de fichier et le système d’exploitation. Pour éviter les problèmes de portabilité, consultez les règles d’ Section and Key Syntax.
Remarque : dans les versions de Qt antérieures à la version 6.4, cette fonction prenait en paramètre ` QString`, et non ` QAnyStringView`.
Voir également ` setValue()`, ` value()` et ` contains()`.
QSettings::Scope QSettings::scope() const
Renvoie la portée utilisée pour stocker les paramètres.
Voir également format(), organizationName() et applicationName().
void QSettings::setArrayIndex(int i)
Définit l'index actuel du tableau sur i. Les appels à des fonctions telles que setValue(), value(), remove() et contains() porteront sur l'élément du tableau situé à cet index.
Vous devez appeler beginReadArray() ou beginWriteArray() avant de pouvoir appeler cette fonction.
void QSettings::setAtomicSyncRequired(bool enable)
Détermine si QSettings doit effectuer une sauvegarde et une rechargement atomiques (synchronisation) des paramètres. Si l'argument enable est défini sur true (valeur par défaut), la méthode sync() n'effectuera que des opérations de synchronisation atomiques. Si cela n'est pas possible, la méthode sync() échouera et la méthode status() renverra une erreur.
En définissant cette propriété sur false, QSettings pourra écrire directement dans le fichier de configuration et ignorer toute erreur liée à la tentative de verrouillage face à d’autres processus essayant d’écrire simultanément. En raison du risque de corruption, cette option doit être utilisée avec prudence, mais elle est nécessaire dans certaines conditions, par exemple lorsqu’un fichier de configuration QSettings::IniFormat se trouve dans un répertoire normalement non accessible en écriture ou dans des flux de données alternatifs NTFS.
Consultez QSaveFile pour plus d’informations sur cette fonctionnalité.
Voir également isAtomicSyncRequired() et QSaveFile.
[static] void QSettings::setDefaultFormat(QSettings::Format format)
Définit le format de fichier par défaut sur l'format indiquée, qui est utilisé pour stocker les paramètres du constructeur QSettings(QObject *).
Si aucun format par défaut n’est défini, QSettings::NativeFormat est utilisé. Consultez la documentation du constructeur QSettings que vous utilisez pour savoir si ce constructeur ignorera cette fonction.
Voir également defaultFormat() et format().
void QSettings::setFallbacksEnabled(bool b)
Détermine si les solutions de repli sont activées à l'adresse b.
Par défaut, les solutions de repli sont activées.
Voir également fallbacksEnabled().
[static] void QSettings::setPath(QSettings::Format format, QSettings::Scope scope, const QString &path)
Définit le chemin d'accès utilisé pour stocker les paramètres des fichiers « format » et « scope » sur « path ». Le fichier « format » peut être au format personnalisé.
Le tableau ci-dessous récapitule les valeurs par défaut :
| Plateforme | Format | Portée | Chemin |
|---|---|---|---|
| Windows | IniFormat | UserScope | FOLDERID_RoamingAppData |
| SystemScope | FOLDERID_ProgramData | ||
| Unix | NativeFormat, IniFormat | UserScope | $HOME/.config ($XDG_CONFIG_HOME) |
| SystemScope | /etc/xdg | ||
| macOS | IniFormat | UserScope | $HOME/.config ($XDG_CONFIG_HOME) |
| SystemScope | /Library/Preferences/Qt | ||
| iOS | IniFormat | UserScope | $HOME/Library/Preferences |
| SystemScope | /Library/Preferences/Qt | ||
| macOS et iOS | NativeFormat | UserScope | $HOME/Library/Preferences |
| SystemScope | /Library/Preferences |
Les chemins d'accès par défaut aux fichiers « SystemScope » peuvent être remplacés lors de la compilation de Qt en passant l'option « -sysconfdir » au script « configure » (voir QLibraryInfo pour plus de détails).
Remarque : la configuration des chemins d'NativeFormat s sous Windows, macOS et iOS n'a aucun effet.
Avertissement : cette fonction n'affecte pas les objets « QSettings » existants.
Voir aussi registerFormat().
void QSettings::setValue(QAnyStringView key, const QVariant &value)
Définit la valeur du paramètre « key » sur « value ». Si le fichier « key » existe déjà, la valeur précédente est écrasée.
La recherche de clés sera sensible ou insensible à la casse selon le format de fichier et le système d’exploitation. Pour éviter les problèmes de portabilité, consultez les règles relatives à Section and Key Syntax.
Exemple :
QSettings settings;
settings.setValue("interval", 30);
settings.value("interval").toInt(); // returns 30
settings.setValue("interval", 6.55);
settings.value("interval").toDouble(); // returns 6.55Remarque : dans les versions de Qt antérieures à la version 6.4, cette fonction prenait en paramètre QString et non QAnyStringView.
Voir également value(), remove() et contains().
QSettings::Status QSettings::status() const
Renvoie un code d'état indiquant la première erreur rencontrée par QSettings, ou QSettings::NoError si aucune erreur ne s'est produite.
Notez que la fonction QSettings différé l'exécution de certaines opérations. C'est pourquoi il peut être judicieux d'appeler la fonction sync() afin de s'assurer que les données stockées dans QSettings sont bien écrites sur le disque avant d'appeler la fonction status().
Voir également sync().
void QSettings::sync()
Enregistre toutes les modifications non sauvegardées sur un support de stockage permanent et recharge tous les paramètres qui auraient été modifiés entre-temps par une autre application.
Cette fonction est appelée automatiquement depuis le destructeur de QSettings et par la boucle d'événements à intervalles réguliers ; vous n'avez donc normalement pas besoin de l'appeler vous-même.
Voir aussi status().
QVariant QSettings::value(QAnyStringView key) const
QVariant QSettings::value(QAnyStringView key, const QVariant &defaultValue) const
Renvoie la valeur associée au paramètre « key ». Si ce paramètre n'existe pas, renvoie « defaultValue ».
Si aucune valeur par défaut n’est spécifiée, une valeur par défaut QVariant est renvoyée.
La recherche de clé sera sensible ou insensible à la casse selon le format de fichier et le système d’exploitation. Pour éviter les problèmes de portabilité, consultez les règles de Section and Key Syntax.
Exemple :
QSettings settings;
settings.setValue("animal/snake", 58);
settings.value("animal/snake", 1024).toInt(); // returns 58
settings.value("animal/zebra", 1024).toInt(); // returns 1024
settings.value("animal/zebra").toInt(); // returns 0Remarque : dans les versions de Qt antérieures à la version 6.4, cette fonction prenait en paramètre QString et non QAnyStringView.
© 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.