QSettings Class
La clase QSettings proporciona configuraciones de aplicación persistentes e independientes de la plataforma. Más...
| Cabecera: | #include <QSettings> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QObject |
- Lista de todos los miembros, incluyendo los heredados
- QSettings es parte de Entrada/Salida y Redes.
Nota: Todas las funciones de esta clase son reentrantes.
Nota: Estas funciones también son thread-safe:
- registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity)
Tipos Públicos
| enum | Format { NativeFormat, Registry32Format, Registry64Format, IniFormat, WebLocalStorageFormat, …, InvalidFormat } |
| ReadFunc | |
| enum | Scope { UserScope, SystemScope } |
| SettingsMap | |
| enum | Status { NoError, AccessError, FormatError } |
| WriteFunc |
Funciones Públicas
| 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 |
Miembros públicos estáticos
| 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) |
Funciones Protegidas Reimplementadas
| virtual bool | event(QEvent *event) override |
Descripción Detallada
Normalmente, los usuarios esperan que una aplicación recuerde su configuración (tamaño y posición de las ventanas, opciones, etc.) en todas las sesiones. Esta información suele almacenarse en el registro del sistema en Windows, y en archivos de listas de propiedades en macOS e iOS. En los sistemas Unix, a falta de un estándar, muchas aplicaciones (incluidas las de KDE) utilizan archivos de texto INI.
QSettings es una abstracción en torno a estas tecnologías, lo que le permite guardar y restaurar la configuración de la aplicación de una manera portátil. También es compatible con custom storage formats.
La API de QSettings está basada en QVariant, permitiéndole guardar la mayoría de los tipos basados en valores, como QString, QRect, y QImage, con el mínimo esfuerzo.
Si todo lo que necesita es una estructura no persistente basada en memoria, considere usar QMap<QString, QVariant> en su lugar.
Uso básico
Al crear un objeto QSettings, debe pasar el nombre de su empresa u organización, así como el nombre de su aplicación. Por ejemplo, si tu producto se llama Star Runner y tu empresa se llama MySoft, construirías el objeto QSettings de la siguiente manera:
QSettings settings("MySoft", "Star Runner");
Los objetos QSettings pueden crearse tanto en la pila como en el montón (es decir, utilizando new). Construir y destruir un objeto QSettings es muy rápido.
Si usas QSettings desde muchos lugares en tu aplicación, puede que quieras especificar el nombre de la organización y el nombre de la aplicación usando QCoreApplication::setOrganizationName() y QCoreApplication::setApplicationName(), y luego usar el constructor por defecto de QSettings:
QCoreApplication::setOrganizationName("MySoft"); QCoreApplication::setOrganizationDomain("mysoft.com"); QCoreApplication::setApplicationName("Star Runner"); ... QSettings settings;
(Aquí, también especificamos el dominio de Internet de la organización. Cuando se establece el dominio de Internet, se utiliza en macOS e iOS en lugar del nombre de la organización, ya que las aplicaciones de macOS e iOS utilizan convencionalmente dominios de Internet para identificarse. Si no se establece ningún dominio, se obtiene un dominio falso a partir del nombre de la organización. Consulte Platform-Specific Notes para obtener más información).
QSettings almacena ajustes. Cada configuración consiste en un QString que especifica el nombre de la configuración (la clave) y un QVariant que almacena los datos asociados con la clave. Para escribir una configuración, utilice setValue(). Por ejemplo:
settings.setValue("editor/wrapMargin", 68);
Si ya existe una configuración con la misma clave, el valor existente se sobrescribe con el nuevo valor. Por razones de eficacia, es posible que los cambios no se guarden inmediatamente en la memoria permanente. (Siempre puede llamar a sync() para confirmar los cambios).
Puede recuperar el valor de un parámetro utilizando value():
int margin = settings.value("editor/wrapMargin").toInt();
Si no hay ningún parámetro con el nombre especificado, QSettings devuelve un valor nulo QVariant (que puede convertirse al entero 0). Puede especificar otro valor por defecto pasando un segundo argumento a value():
int margin = settings.value("editor/wrapMargin", 80).toInt();
Para comprobar si existe una clave determinada, llame a contains(). Para eliminar la configuración asociada a una clave, llame a remove(). Para obtener la lista de todas las claves, llame a allKeys(). Para eliminar todas las claves, llame a clear().
Tipos QVariant y GUI
Debido a que QVariant es parte del módulo Qt Core, no puede proporcionar funciones de conversión a tipos de datos como QColor, QImage, y QPixmap, que son parte de Qt GUI. En otras palabras, no hay funciones toColor(), toImage(), o toPixmap() en QVariant.
En su lugar, puede utilizar la función de plantilla QVariant::value() . Por ejemplo:
QSettings settings("MySoft", "Star Runner"); QColor color = settings.value("DataPump/bgcolor").value<QColor>();
La conversión inversa (por ejemplo, de QColor a QVariant) es automática para todos los tipos de datos admitidos por QVariant, incluidos los tipos relacionados con GUI:
QSettings settings("MySoft", "Star Runner"); QColor color = QColor(Qt::blue); settings.setValue("DataPump/bgcolor", color);
Los tipos personalizados registrados mediante qRegisterMetaType() que tienen operadores para la transmisión hacia y desde un QDataStream pueden almacenarse mediante QSettings.
Sintaxis de secciones y claves
Las claves de configuración pueden contener cualquier carácter Unicode. El formato del archivo y el sistema operativo determinarán si son sensibles a mayúsculas o minúsculas o no. En Windows, el registro y los archivos INI utilizarán claves que no distinguen entre mayúsculas y minúsculas, mientras que los formatos especificados por el usuario registrados con registerFormat() pueden ser cualquiera de los dos. En los sistemas Unix, las claves siempre distinguen entre mayúsculas y minúsculas.
Para evitar problemas de portabilidad, siga estas sencillas reglas:
- Refiérase siempre a la misma clave utilizando las mismas mayúsculas y minúsculas. Por ejemplo, si te refieres a una clave como "fuentes de texto" en un lugar de tu código, no te refieras a ella como "Fuentes de Texto" en otro lugar.
- Evite que los nombres de las teclas sean idénticos, salvo por las mayúsculas y minúsculas. Por ejemplo, si tienes una tecla llamada "MainWindow", no intentes guardar otra tecla como "mainwindow".
- No utilice barras ('/' y '\') en los nombres de secciones o teclas; la barra invertida se utiliza para separar subclaves (véase más adelante). En windows '\' son convertidos por QSettings a '/', lo que los hace idénticos.
Puede formar claves jerárquicas utilizando el carácter '/' como separador, de forma similar a las rutas de archivos de Unix. Por ejemplo:
settings.setValue("mainwindow/size", win->size()); settings.setValue("mainwindow/fullScreen", win->isFullScreen()); settings.setValue("outputpanel/visible", panel->isVisible());
Si quieres guardar o restaurar muchas configuraciones con el mismo prefijo, puedes especificar el prefijo usando beginGroup() y llamar a endGroup() al final. He aquí de nuevo el mismo ejemplo, pero esta vez utilizando el mecanismo de grupos:
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 se establece un grupo utilizando beginGroup(), el comportamiento de la mayoría de las funciones cambia en consecuencia. Los grupos pueden establecerse recursivamente.
Además de grupos, QSettings también soporta el concepto de "array". Véase beginReadArray() y beginWriteArray() para más detalles.
Mecanismo de Fallback
Supongamos que has creado un objeto QSettings con el nombre de la organización MySoft y el nombre de la aplicación Star Runner. Al buscar un valor, se buscan hasta cuatro ubicaciones en este orden:
- una ubicación específica del usuario para la aplicación Star Runner
- una ubicación específica del usuario para todas las aplicaciones de MySoft
- una ubicación de todo el sistema para la aplicación Star Runner
- una ubicación en todo el sistema para todas las aplicaciones de MySoft
(Consulte Platform-Specific Notes más adelante para obtener información sobre cuáles son estas ubicaciones en las distintas plataformas compatibles con Qt).
Si no se puede encontrar una clave en la primera ubicación, la búsqueda continúa en la segunda ubicación, y así sucesivamente. Esto le permite almacenar la configuración de todo el sistema o de toda la organización y anularla por usuario o por aplicación. Para desactivar este mecanismo, llame a setFallbacksEnabled(false).
Aunque se pueden leer las claves de las cuatro ubicaciones, sólo se puede escribir en el primer archivo (la ubicación específica del usuario para la aplicación en cuestión). Para escribir en cualquiera de los otros archivos, omita el nombre de la aplicación y/o especifique QSettings::SystemScope (en lugar de QSettings::UserScope, por defecto).
Veámoslo con un ejemplo:
QSettings obj1("MySoft", "Star Runner"); QSettings obj2("MySoft"); QSettings obj3(QSettings::SystemScope, "MySoft", "Star Runner"); QSettings obj4(QSettings::SystemScope, "MySoft");
La siguiente tabla resume qué objetos QSettings acceden a qué ubicación. "X" significa que la ubicación es la ubicación principal asociada al objeto QSettings y se utiliza tanto para lectura como para escritura; "o" significa que la ubicación se utiliza como fallback cuando se lee.
| Ubicaciones | obj1 | obj2 | obj3 | obj4 |
|---|---|---|---|---|
| 1. Usuario, Aplicación | X | |||
| 2. Usuario, Organización | o | X | ||
| 3. Sistema, Aplicación | o | X | ||
| 4. Sistema, Organización | o | o | o | X |
La belleza de este mecanismo es que funciona en todas las plataformas soportadas por Qt y que aún te da mucha flexibilidad, sin requerir que especifiques ningún nombre de archivo o ruta de registro.
Si quieres usar archivos INI en todas las plataformas en lugar de la API nativa, puedes pasar QSettings::IniFormat como primer argumento al constructor de QSettings, seguido del ámbito, el nombre de la organización y el nombre de la aplicación:
Tenga en cuenta que los archivos INI pierden la distinción entre los datos numéricos y las cadenas utilizadas para codificarlos, por lo que los valores escritos como números se leerán como QString. El valor numérico puede recuperarse utilizando QString::toInt(), QString::toDouble() y funciones relacionadas.
Restauración del estado de una aplicación GUI
QSettings se utiliza a menudo para almacenar el estado de una aplicación GUI. El siguiente ejemplo ilustra cómo utilizar QSettings para guardar y restaurar la geometría de la ventana principal de una aplicación.
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(); }
Ver Geometría de Ventanas para una discusión sobre por qué es mejor llamar a QWidget::resize() y QWidget::move() en lugar de QWidget::setGeometry() para restaurar la geometría de una ventana.
Las funciones readSettings() y writeSettings() deben ser llamadas desde el constructor de la ventana principal y desde el manejador de eventos de cierre de la siguiente manera:
MainWindow::MainWindow() { ... readSettings(); } void MainWindow::closeEvent(QCloseEvent *event) { if (userReallyWantsToQuit()) { writeSettings(); event->accept(); } else { event->ignore(); } }
Accediendo a la Configuración desde Múltiples Hilos o Procesos Simultáneamente
QSettings es reentrante. Esto significa que puede utilizar distintos objetos QSettings en diferentes subprocesos simultáneamente. Esta garantía se mantiene incluso cuando los objetos QSettings se refieren a los mismos ficheros en disco (o a las mismas entradas en el registro del sistema). Si un ajuste se modifica a través de un objeto QSettings, el cambio será inmediatamente visible en cualquier otro objeto QSettings que opere en la misma ubicación y que viva en el mismo proceso.
QSettings puede ser utilizado con seguridad desde diferentes procesos (que pueden ser diferentes instancias de tu aplicación ejecutándose al mismo tiempo o diferentes aplicaciones en conjunto) para leer y escribir en las mismas ubicaciones del sistema, siempre que se cumplan ciertas condiciones. Para QSettings::IniFormat, utiliza el bloqueo de archivos de asesoramiento y un algoritmo de fusión inteligente para garantizar la integridad de los datos. La condición para que esto funcione es que el archivo de configuración de escritura debe ser un archivo normal y debe residir en un directorio en el que el usuario actual pueda crear nuevos archivos temporales. Si no es el caso, hay que utilizar setAtomicSyncRequired() para desactivar la seguridad.
Tenga en cuenta que sync() importa los cambios realizados por otros procesos (además de escribir los cambios de este QSettings).
Notas específicas de la plataforma
Ubicaciones donde se almacenan los ajustes de la aplicación
Como se mencionó en la sección Fallback Mechanism, QSettings almacena las configuraciones para una aplicación en hasta cuatro ubicaciones, dependiendo de si las configuraciones son específicas del usuario o de todo el sistema y si las configuraciones son específicas de la aplicación o de toda la organización. Para simplificar, asumimos que la organización se llama MySoft y la aplicación se llama Star Runner.
En los sistemas Unix, si el formato de archivo es NativeFormat, se utilizan por defecto los siguientes archivos:
$HOME/.config/MySoft/Star Runner.conf$HOME/.config/MySoft.conf- para cada directorio <dir> en $XDG_CONFIG_DIRS:
<dir>/MySoft/Star Runner.conf - para cada directorio <dir> en $XDG_CONFIG_DIRS:
<dir>/MySoft.conf
Nota: Si XDG_CONFIG_DIRS no está configurado, se utiliza el valor predeterminado de /etc/xdg.
En macOS e iOS, si el formato de archivo es NativeFormat, estos archivos se utilizan por defecto:
$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
En Windows, la configuración de NativeFormat se almacena en las siguientes rutas del registro:
HKEY_CURRENT_USER\Software\MySoft\Star RunnerHKEY_CURRENT_USER\Software\MySoft\OrganizationDefaultsHKEY_LOCAL_MACHINE\Software\MySoft\Star RunnerHKEY_LOCAL_MACHINE\Software\MySoft\OrganizationDefaults
Nota: En Windows, para los programas de 32 bits que se ejecutan en modo WOW64, la configuración se almacena en la siguiente ruta del registro: HKEY_LOCAL_MACHINE\Software\WOW6432node.
Si el formato del archivo es NativeFormat, se trata de "Settings/MySoft/Star Runner.conf" en el directorio principal de la aplicación.
Si el formato de archivo es IniFormat, en Unix, macOS e iOS se utilizan los siguientes archivos:
$HOME/.config/MySoft/Star Runner.ini$HOME/.config/MySoft.ini- para cada directorio <dir> en $XDG_CONFIG_DIRS:
<dir>/MySoft/Star Runner.ini - para cada directorio <dir> en $XDG_CONFIG_DIRS:
<dir>/MySoft.ini
Nota: Si XDG_CONFIG_DIRS no está configurado, se utiliza el valor predeterminado de /etc/xdg.
En Windows, se utilizan los siguientes archivos:
FOLDERID_RoamingAppData\MySoft\Star Runner.iniFOLDERID_RoamingAppData\MySoft.iniFOLDERID_ProgramData\MySoft\Star Runner.iniFOLDERID_ProgramData\MySoft.ini
Los identificadores prefijados por FOLDERID_ son listas especiales de ID de elementos que deben pasarse a la función de la API Win32 SHGetKnownFolderPath() para obtener la ruta correspondiente.
FOLDERID_RoamingAppData normalmente apunta a C:\Users\User Name\AppData\Roaming, también indicado por la variable de entorno %APPDATA%.
FOLDERID_ProgramData normalmente apunta a C:\ProgramData.
Si el formato de archivo es IniFormat, se trata de "Settings/MySoft/Star Runner.ini" en el directorio de inicio de la aplicación.
Las rutas de los archivos .ini y .conf pueden modificarse con setPath(). En Unix, macOS e iOS, el usuario puede anularlas configurando la variable de entorno XDG_CONFIG_HOME; consulta setPath() para obtener más información.
Acceso directo a archivos INI y .plist
A veces se desea acceder a la configuración almacenada en un archivo específico o en una ruta del registro. En todas las plataformas, si quieres leer un archivo INI directamente, puedes usar el constructor QSettings que toma un nombre de archivo como primer argumento y pasa QSettings::IniFormat como segundo argumento. Por ejemplo:
A continuación, puede utilizar el objeto QSettings para leer y escribir la configuración en el archivo.
En macOS e iOS, puedes acceder a la lista de propiedades de los archivos .plist pasando QSettings::NativeFormat como segundo argumento. Por ejemplo:
Acceso directo al Registro de Windows
En Windows, QSettings le permite acceder a las configuraciones que se han escrito con QSettings (o configuraciones en un formato compatible, por ejemplo, datos de cadena) en el registro del sistema. Esto se hace construyendo un objeto QSettings con una ruta en el registro y QSettings::NativeFormat.
Por ejemplo:
Todas las entradas del registro que aparezcan bajo la ruta especificada pueden leerse o escribirse a través del objeto QSettings de la forma habitual (utilizando barras inclinadas en lugar de barras invertidas). Por ejemplo:
settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0);
Tenga en cuenta que el carácter barra invertida es, como se ha mencionado, utilizado por QSettings para separar subclaves. Como resultado, no puede leer o escribir entradas del registro de Windows que contengan barras o barras invertidas; debe utilizar una API nativa de Windows si necesita hacerlo.
Acceso a la configuración común del Registro en Windows
En Windows, es posible que una clave tenga tanto un valor como subclaves. Se accede a su valor por defecto utilizando "Por defecto" o "." en lugar de una subclave:
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"
En otras plataformas distintas de Windows, "Predeterminado" y "." se tratarían como subclaves normales.
Limitaciones de plataforma
Aunque QSettings intenta suavizar las diferencias entre las distintas plataformas soportadas, aún existen algunas diferencias que debe tener en cuenta a la hora de portar su aplicación:
- El registro del sistema Windows tiene las siguientes limitaciones: Una subclave no puede superar los 255 caracteres, el valor de una entrada no puede superar los 16.383 caracteres y todos los valores de una clave no pueden superar los 65.535 caracteres. Una forma de sortear estas limitaciones es almacenar la configuración utilizando IniFormat en lugar de NativeFormat.
- En Windows, cuando se utiliza el registro del sistema Windows, QSettings no conserva el tipo original del valor. Por lo tanto, el tipo del valor puede cambiar cuando se establece un nuevo valor. Por ejemplo, un valor del tipo
REG_EXPAND_SZcambiará aREG_SZ. - En macOS e iOS, allKeys() devolverá algunas claves adicionales para ajustes globales que se aplican a todas las aplicaciones. Estas claves pueden ser leídas usando value() pero no pueden ser cambiadas, sólo sombreadas. Llamar a setFallbacksEnabled(false) ocultará estos ajustes globales.
- En macOS e iOS, la API CFPreferences utilizada por QSettings espera nombres de dominio de Internet en lugar de nombres de organizaciones. Para proporcionar una API uniforme, QSettings obtiene un nombre de dominio falso a partir del nombre de la organización (a menos que el nombre de la organización ya sea un nombre de dominio, por ejemplo OpenOffice.org). El algoritmo añade ".com" al nombre de la empresa y sustituye los espacios y otros caracteres ilegales por guiones. Si desea especificar un nombre de dominio diferente, llame a QCoreApplication::setOrganizationDomain(), QCoreApplication::setOrganizationName(), y QCoreApplication::setApplicationName() en su función
main()y, a continuación, utilice el constructor QSettings predeterminado. Otra solución es utilizar directivas de preprocesador, por ejemplo: - En macOS, los permisos para acceder a configuraciones que no pertenecen al usuario actual (es decir, SystemScope) han cambiado con 10.7 (Lion). Antes de esa versión, los usuarios con derechos de administrador podían acceder a ellos. En 10.7 y 10.8 (Mountain Lion), sólo puede hacerlo el usuario root. Sin embargo, 10.9 (Mavericks) vuelve a cambiar esa regla, pero sólo para el formato nativo (archivos plist).
Véase también QVariant y QSessionManager.
Documentación de tipos de miembros
enum QSettings::Format
Este tipo enum especifica el formato de almacenamiento utilizado por QSettings.
| Constante | Valor | Descripción |
|---|---|---|
QSettings::NativeFormat | 0 | Almacena la configuración utilizando el formato de almacenamiento más apropiado para la plataforma. En Windows, se trata del registro del sistema; en macOS e iOS, se trata de la API CFPreferences; en Unix, se trata de archivos de configuración textuales en formato INI. |
QSettings::Registry32Format | 2 | Sólo Windows: Acceda explícitamente al registro del sistema de 32 bits desde una aplicación de 64 bits que se ejecute en Windows de 64 bits. En Windows de 32 bits o desde una aplicación de 32 bits en Windows de 64 bits, esto funciona igual que especificar NativeFormat. Este valor enum se añadió en Qt 5.7. |
QSettings::Registry64Format | 3 | Sólo para Windows: Accede explícitamente al registro del sistema de 64 bits desde una aplicación de 32 bits que se ejecuta en Windows de 64 bits. En Windows de 32 bits o desde una aplicación de 64 bits en Windows de 64 bits, esto funciona igual que especificar NativeFormat. Este valor enum se añadió en Qt 5.7. |
QSettings::IniFormat | 1 | Almacenar la configuración en archivos INI. Tenga en cuenta que los archivos INI pierden la distinción entre los datos numéricos y las cadenas utilizadas para codificarlos, por lo que los valores escritos como números se leerán como QString. |
QSettings::WebLocalStorageFormat | 4 | Sólo WASM: Almacenar la configuración en window.localStorage para el origen actual. Si no se permiten cookies, se vuelve al formato INI. Esto proporciona hasta 5MiB de almacenamiento por origen, pero el acceso a él es síncrono y no se requiere JSPI. |
QSettings::WebIndexedDBFormat | 5 | Sólo WASM: Almacena la configuración en una base de datos indexada para el origen actual. Si no se permiten cookies, se vuelve al formato INI. Esto requiere JSPI, pero proporciona más almacenamiento que WebLocalStorageFormat. |
QSettings::InvalidFormat | 16 | Valor especial devuelto por registerFormat(). |
En Unix, NativeFormat e IniFormat significan lo mismo, excepto que la extensión del archivo es diferente (.conf para NativeFormat, .ini para IniFormat).
El formato de archivo INI es un formato de archivo de Windows que Qt soporta en todas las plataformas. En ausencia de un estándar INI, intentamos seguir lo que hace Microsoft, con las siguientes excepciones:
- Si almacena tipos que QVariant no puede convertir a QString (por ejemplo, QPoint, QRect, y QSize), Qt utiliza una sintaxis basada en
@para codificar el tipo. Por ejemplo:pos = @QPoint(100 100)
Para minimizar los problemas de compatibilidad, cualquier
@que no aparezca en la primera posición del valor o que no vaya seguido de un tipo Qt (Point,Rect,Size, etc.) se trata como un carácter normal. - Aunque la barra invertida es un carácter especial en los archivos INI, la mayoría de las aplicaciones de Windows no escapan de las barras invertidas (
\) en las rutas de los archivos:windir = C:\WindowsQSettings siempre trata la barra invertida como un carácter especial y no proporciona ninguna API para leer o escribir este tipo de entradas.
- El formato de archivo INI tiene severas restricciones en la sintaxis de una clave. Qt soluciona esto utilizando
%como carácter de escape en las claves. Además, si guardas una configuración de nivel superior (una clave sin barras, por ejemplo, "someKey"), aparecerá en la sección "General" del archivo INI. Para evitar sobrescribir otras claves, si guardas algo utilizando una clave como "General/algunaClave", la clave se ubicará en la sección "%General", no en la sección "General". - En línea con la mayoría de las implementaciones actuales, QSettings asumirá que los valores en el archivo INI están codificados en UTF-8. Esto significa que los valores serán decodificados como entradas codificadas en UTF-8 y escritas de vuelta como UTF-8. Para mantener la compatibilidad con versiones anteriores de Qt, las claves del archivo INI se escriben en formato %-encoded, pero pueden leerse tanto en formato %-encoded como en UTF-8.
Compatibilidad con versiones anteriores de Qt
Tenga en cuenta que este comportamiento es diferente de cómo se comportaba QSettings en versiones de Qt anteriores a Qt 6. Sin embargo, los archivos INI escritos con Qt 5 o versiones anteriores son totalmente legibles por una aplicación basada en Qt 6 (a menos que se haya establecido un códec ini distinto de utf8). Pero los archivos INI escritos con Qt 6 sólo serán legibles por versiones antiguas de Qt si se establece el "iniCodec" a un UTF-8 textcodec.
Véase también registerFormat() y setPath().
QSettings::ReadFunc
Typedef para un puntero a una función con la siguiente firma:
ReadFunc se utiliza en registerFormat() como puntero a una función que lee un conjunto de pares clave/valor. ReadFunc debe leer todas las opciones en una sola pasada, y devolver todas las opciones en el contenedor SettingsMap, que inicialmente está vacío.
Véase también WriteFunc y registerFormat().
enum QSettings::Scope
Este enum especifica si los ajustes son específicos del usuario o compartidos por todos los usuarios del mismo sistema.
| Constante | Valor | Descripción |
|---|---|---|
QSettings::UserScope | 0 | Almacena la configuración en una ubicación específica para el usuario actual (por ejemplo, en el directorio personal del usuario). |
QSettings::SystemScope | 1 | Almacenar la configuración en una ubicación global, para que todos los usuarios de la misma máquina accedan al mismo conjunto de configuraciones. |
Véase también setPath().
QSettings::SettingsMap
Typedef para QMap<QString, QVariant>.
Véase también registerFormat().
enum QSettings::Status
Son posibles los siguientes valores de estado:
| Constante | Valor | Descripción |
|---|---|---|
QSettings::NoError | 0 | No se ha producido ningún error. |
QSettings::AccessError | 1 | Se ha producido un error de acceso (por ejemplo, al intentar escribir en un archivo de sólo lectura). |
QSettings::FormatError | 2 | Se ha producido un error de formato (por ejemplo, al cargar un archivo INI mal formado). |
Véase también status().
QSettings::WriteFunc
Typedef para un puntero a una función con la siguiente firma:
WriteFunc se utiliza en registerFormat() como puntero a una función que escribe un conjunto de pares clave/valor. WriteFunc sólo se llama una vez, por lo que es necesario escribir la configuración de una sola vez.
Véase también ReadFunc y registerFormat().
Documentación de funciones miembro
[explicit] QSettings::QSettings(QObject *parent = nullptr)
Construye un objeto QSettings para acceder a los ajustes de la aplicación y la organización establecidos previamente con una llamada a QCoreApplication::setOrganizationName(), QCoreApplication::setOrganizationDomain() y QCoreApplication::setApplicationName().
El ámbito es QSettings::UserScope y el formato es defaultFormat() (QSettings::NativeFormat por defecto). Utilice setDefaultFormat() antes de llamar a este constructor para cambiar el formato por defecto utilizado por este constructor.
El código
QSettings settings("Moose Soft", "Facturo-Pro");
es equivalente a
QCoreApplication::setOrganizationName("Moose Soft"); QCoreApplication::setApplicationName("Facturo-Pro"); QSettings settings;
Si QCoreApplication::setOrganizationName() y QCoreApplication::setApplicationName() no han sido llamados previamente, el objeto QSettings no podrá leer o escribir ninguna configuración, y status() devolverá AccessError.
Deberías proporcionar tanto el dominio (usado por defecto en macOS e iOS) como el nombre (usado por defecto en otros sitios), aunque el código se las arreglará si proporcionas sólo uno, que será el usado (en todas las plataformas), en desacuerdo con el nombre habitual del archivo en plataformas para las que no es el predeterminado.
Véase también QCoreApplication::setOrganizationName(), QCoreApplication::setOrganizationDomain(), QCoreApplication::setApplicationName() y setDefaultFormat().
[explicit] QSettings::QSettings(QSettings::Scope scope, QObject *parent = nullptr)
Construye un objeto QSettings de la misma forma que QSettings(QObject *parent) pero con el scope dado.
Ver también QSettings(QObject *parent).
QSettings::QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)
Construye un objeto QSettings para acceder a la configuración almacenada en el archivo llamado fileName, con padre parent. Si el archivo aún no existe, se crea.
Si format es QSettings::NativeFormat, el significado de fileName depende de la plataforma. En Unix, fileName es el nombre de un archivo INI. En macOS e iOS, fileName es el nombre de un archivo .plist. En Windows, fileName es una ruta en el registro del sistema.
Si format es QSettings::IniFormat, fileName es el nombre de un archivo INI.
Advertencia: Esta función se proporciona por comodidad. Funciona bien para acceder a archivos INI o .plist generados por Qt, pero puede fallar en algunas sintaxis encontradas en tales archivos originados por otros programas. En particular, ten en cuenta las siguientes limitaciones:
- QSettings no proporciona ninguna forma de leer entradas de "ruta" INI, es decir, entradas con caracteres de barra oblicua sin descifrar. (Esto se debe a que estas entradas son ambiguas y no pueden resolverse automáticamente).
- En los archivos INI, QSettings utiliza el carácter
@como metacarácter en algunos contextos, para codificar tipos de datos específicos de Qt (por ejemplo,@Rect), y por lo tanto podría malinterpretarlo cuando ocurre en archivos INI puros.
Véase también fileName().
[explicit] QSettings::QSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
Construye un objeto QSettings para acceder a la configuración de la aplicación llamada application desde la organización llamada organization, y con el padre parent.
Ejemplo:
QSettings settings("Moose Tech", "Facturo-Pro");
El ámbito se establece en QSettings::UserScope, y el formato se establece en QSettings::NativeFormat (es decir, llamar a setDefaultFormat() antes de llamar a este constructor no tiene ningún efecto).
Véase también setDefaultFormat() y Fallback Mechanism.
QSettings::QSettings(QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
Construye un objeto QSettings para acceder a la configuración de la aplicación llamada application desde la organización llamada organization, y con el padre parent.
Si scope es QSettings::UserScope, el objeto QSettings busca primero en la configuración específica del usuario, antes de buscar en la configuración de todo el sistema. Si scope es QSettings::SystemScope, el objeto QSettings ignora la configuración específica del usuario y proporciona acceso a la configuración de todo el sistema.
El formato de almacenamiento se establece en QSettings::NativeFormat (es decir, llamar a setDefaultFormat() antes de llamar a este constructor no tiene ningún efecto).
Si no se proporciona el nombre de la aplicación, el objeto QSettings sólo accederá a la organización locations.
Véase también setDefaultFormat().
QSettings::QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent = nullptr)
Construye un objeto QSettings para acceder a la configuración de la aplicación llamada application desde la organización llamada organization, y con el padre parent.
Si scope es QSettings::UserScope, el objeto QSettings busca primero en la configuración específica del usuario, antes de buscar en la configuración de todo el sistema. Si scope es QSettings::SystemScope, el objeto QSettings ignora la configuración específica del usuario y proporciona acceso a la configuración de todo el sistema.
Si format es QSettings::NativeFormat, se utiliza la API nativa para almacenar la configuración. Si format es QSettings::IniFormat, se utiliza el formato INI.
Si no se indica ningún nombre de aplicación, el objeto QSettings sólo accederá a la configuración de toda la organización locations.
[virtual noexcept] QSettings::~QSettings()
Destruye el objeto QSettings.
Cualquier cambio no guardado será eventualmente escrito en el almacenamiento permanente.
Véase también sync().
QStringList QSettings::allKeys() const
Devuelve una lista de todas las claves, incluidas las subclaves, que pueden leerse utilizando el objeto QSettings.
Ejemplo:
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 se establece un grupo utilizando beginGroup(), sólo se devuelven las claves del grupo, sin el prefijo del grupo:
settings.beginGroup("fridge"); keys = settings.allKeys(); // keys: ["color", "size"]
Véase también childGroups() y childKeys().
QString QSettings::applicationName() const
Devuelve el nombre de la aplicación utilizada para almacenar la configuración.
Véase también QCoreApplication::applicationName(), format(), scope() y organizationName().
void QSettings::beginGroup(QAnyStringView prefix)
Añade prefix al grupo actual.
El grupo actual se añade automáticamente a todas las claves especificadas en QSettings. Además, las funciones de consulta como childGroups(), childKeys() y allKeys() se basan en el grupo. Por defecto, no se establece ningún grupo.
Los grupos son útiles para evitar escribir las mismas rutas de configuración una y otra vez. Por ejemplo:
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();
Esto establecerá el valor de tres ajustes:
mainwindow/sizemainwindow/activeoutputpanel/visible
Llame a endGroup() para restablecer el grupo actual a lo que era antes de la correspondiente llamada a beginGroup(). Los grupos pueden anidarse.
Nota: En versiones de Qt anteriores a la 6.4, esta función tomaba QString, no QAnyStringView.
Véase también endGroup() y group().
int QSettings::beginReadArray(QAnyStringView prefix)
Añade prefix al grupo actual y comienza a leer de un array. Devuelve el tamaño del array.
Ejemplo:
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(); //... }
Utiliza beginWriteArray() para escribir el array en primer lugar.
Nota: En versiones de Qt anteriores a la 6.4, esta función tomaba QString, no QAnyStringView.
Ver también beginWriteArray(), endArray(), y setArrayIndex().
void QSettings::beginWriteArray(QAnyStringView prefix, int size = -1)
Añade prefix al grupo actual y comienza a escribir un array de tamaño size. Si size es -1 (por defecto), se determina automáticamente basándose en los índices de las entradas escritas.
Si tienes muchas ocurrencias de un determinado conjunto de claves, puedes utilizar arrays para hacerte la vida más fácil. Por ejemplo, supongamos que desea guardar una lista de longitud variable de nombres de usuario y contraseñas. Podrías entonces escribir:
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(); //... }
Las claves generadas tendrán la forma
logins/sizelogins/1/userNamelogins/1/passwordlogins/2/userNamelogins/2/passwordlogins/3/userNamelogins/3/password- ...
Para volver a leer un array, utilice beginReadArray().
Nota: En versiones de Qt anteriores a la 6.4, esta función tomaba QString, no QAnyStringView.
Véase también beginReadArray(), endArray(), y setArrayIndex().
QStringList QSettings::childGroups() const
Devuelve una lista de todos los grupos de nivel superior de claves que contienen claves que pueden leerse utilizando el objeto QSettings.
Ejemplo:
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 se establece un grupo utilizando beginGroup(), se devuelven las claves de primer nivel de ese grupo, sin el prefijo de grupo.
settings.beginGroup("fridge"); groups = settings.childGroups(); // groups: []
Puede navegar por toda la jerarquía de ajustes utilizando childKeys() y childGroups() de forma recursiva.
Véase también childKeys() y allKeys().
QStringList QSettings::childKeys() const
Devuelve una lista de todas las claves de nivel superior que pueden leerse utilizando el objeto QSettings.
Ejemplo:
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 se establece un grupo utilizando beginGroup(), se devuelven las claves de nivel superior de ese grupo, sin el prefijo de grupo:
settings.beginGroup("fridge"); keys = settings.childKeys(); // keys: ["color", "size"]
Puede navegar por toda la jerarquía de ajustes utilizando childKeys() y childGroups() de forma recursiva.
Véase también childGroups() y allKeys().
void QSettings::clear()
Elimina todas las entradas de la ubicación primaria asociada a este objeto QSettings.
Las entradas de las ubicaciones secundarias no se eliminan.
Si sólo desea eliminar las entradas en la actual group(), utilice remove("") en su lugar.
Véase también remove() y setFallbacksEnabled().
bool QSettings::contains(QAnyStringView key) const
Devuelve true si existe un ajuste llamado key; devuelve false en caso contrario.
Si se establece un grupo utilizando beginGroup(), se considera que key es relativo a ese grupo.
La búsqueda de claves será sensible o insensible a mayúsculas y minúsculas dependiendo del formato del fichero y del sistema operativo. Para evitar problemas de portabilidad, consulte las reglas de Section and Key Syntax.
Nota: En versiones de Qt anteriores a la 6.4, esta función tomaba QString, no QAnyStringView.
Véase también value() y setValue().
[static] QSettings::Format QSettings::defaultFormat()
Devuelve el formato de archivo predeterminado utilizado para almacenar la configuración del constructor QSettings(QObject *). Si no se establece ningún formato por defecto, se utiliza QSettings::NativeFormat.
Véase también setDefaultFormat() y format().
void QSettings::endArray()
Cierra el array que se inició utilizando beginReadArray() o beginWriteArray().
Véase también beginReadArray() y beginWriteArray().
void QSettings::endGroup()
Restablece el grupo a lo que era antes de la llamada correspondiente a beginGroup().
Ejemplo:
settings.beginGroup("alpha"); // settings.group() == "alpha" settings.beginGroup("beta"); // settings.group() == "alpha/beta" settings.endGroup(); // settings.group() == "alpha" settings.endGroup(); // settings.group() == ""
Véase también beginGroup() y group().
[override virtual protected] bool QSettings::event(QEvent *event)
Reimplementa: QObject::event(QEvent *e).
bool QSettings::fallbacksEnabled() const
Devuelve true si los fallbacks están habilitados; devuelve false en caso contrario.
Por defecto, las fallbacks están activadas.
Véase también setFallbacksEnabled().
QString QSettings::fileName() const
Devuelve la ruta donde se almacenan los ajustes escritos con este objeto QSettings.
En Windows, si el formato es QSettings::NativeFormat, el valor devuelto es una ruta del registro del sistema, no una ruta de archivo.
Véase también isWritable() y format().
QSettings::Format QSettings::format() const
Devuelve el formato utilizado para almacenar la configuración.
Véase también defaultFormat(), fileName(), scope(), organizationName() y applicationName().
QString QSettings::group() const
Devuelve el grupo actual.
Véase también beginGroup() y endGroup().
bool QSettings::isAtomicSyncRequired() const
Devuelve true si sólo se permite a QSettings realizar el guardado atómico y la recarga (sincronización) de los ajustes. Devuelve false si se permite guardar el contenido de los ajustes directamente en el archivo de configuración.
El valor por defecto es true.
Véase también setAtomicSyncRequired() y QSaveFile.
bool QSettings::isWritable() const
Devuelve true si la configuración se puede escribir utilizando este objeto QSettings; devuelve false en caso contrario.
Una razón por la que isWritable() puede devolver false es si QSettings opera sobre un fichero de sólo lectura.
Advertencia: Esta función no es perfectamente fiable, porque los permisos del fichero pueden cambiar en cualquier momento.
Véase también fileName(), status(), y sync().
QString QSettings::organizationName() const
Devuelve el nombre de la organización utilizada para almacenar la configuración.
Véase también QCoreApplication::organizationName(), format(), scope() y applicationName().
[static] QSettings::Format QSettings::registerFormat(const QString &extension, QSettings::ReadFunc readFunc, QSettings::WriteFunc writeFunc, Qt::CaseSensitivity caseSensitivity = Qt::CaseSensitive)
Registra un formato de almacenamiento personalizado. En caso de éxito, devuelve un valor de formato especial que se puede pasar al constructor QSettings. En caso de error, devuelve InvalidFormat.
extension es la extensión de archivo asociada al formato (sin el '.').
Los parámetros readFunc y writeFunc son punteros a funciones que leen y escriben un conjunto de pares clave/valor. El parámetro QIODevice a las funciones de lectura y escritura se abre siempre en modo binario (es decir, sin la bandera QIODeviceBase::Text ).
El parámetro caseSensitivity especifica si las claves distinguen entre mayúsculas y minúsculas o no. Esto supone una diferencia cuando se buscan valores utilizando QSettings. Por defecto, se distingue entre mayúsculas y minúsculas. El parámetro debe ser Qt::CaseSensitive en sistemas Unix.
Por defecto, si utiliza uno de los constructores que funcionan en términos de un nombre de organización y un nombre de aplicación, las ubicaciones del sistema de archivos utilizadas son las mismas que para IniFormat. Utilice setPath() para especificar otras ubicaciones.
Ejemplo:
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"); //... }
Nota: Esta función es thread-safe.
Véase también setPath().
void QSettings::remove(QAnyStringView key)
Elimina la configuración key y cualquier subconfiguración de key.
Ejemplo:
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"]
Tenga en cuenta que si una de las ubicaciones alternativas contiene un ajuste con la misma clave, ese ajuste será visible después de llamar a remove().
Si key es una cadena vacía, se eliminan todas las claves de la actual group(). Por ejemplo:
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 búsqueda de claves será sensible o insensible a mayúsculas y minúsculas dependiendo del formato del archivo y del sistema operativo. Para evitar problemas de portabilidad, consulte las reglas de Section and Key Syntax.
Nota: En versiones de Qt anteriores a la 6.4, esta función tomaba QString, no QAnyStringView.
Véase también setValue(), value(), y contains().
QSettings::Scope QSettings::scope() const
Devuelve el ámbito utilizado para almacenar la configuración.
Véase también format(), organizationName() y applicationName().
void QSettings::setArrayIndex(int i)
Establece el índice actual de la matriz en i. Las llamadas a funciones como setValue(), value(), remove(), y contains() operarán sobre la entrada del array en ese índice.
Debe llamar a beginReadArray() o beginWriteArray() antes de poder llamar a esta función.
void QSettings::setAtomicSyncRequired(bool enable)
Configura si se requiere QSettings para realizar el guardado atómico y la recarga (sincronización) de la configuración. Si el argumento enable es true (el valor predeterminado), sync() sólo realizará operaciones de sincronización que sean atómicas. Si esto no es posible, sync() fallará y status() será una condición de error.
Establecer esta propiedad a false permitirá a QSettings escribir directamente en el archivo de configuración e ignorar cualquier error tratando de bloquearlo contra otros procesos tratando de escribir al mismo tiempo. Debido al potencial de corrupción, esta opción debe usarse con cuidado, pero es necesaria en ciertas condiciones, como un archivo de configuración QSettings::IniFormat que existe en un directorio en el que no se puede escribir o en NTFS Alternate Data Streams.
Consulte QSaveFile para obtener más información sobre esta función.
Véase también isAtomicSyncRequired() y QSaveFile.
[static] void QSettings::setDefaultFormat(QSettings::Format format)
Establece el formato de archivo predeterminado en format, que se utiliza para almacenar la configuración del constructor QSettings(QObject *).
Si no se establece ningún formato por defecto, se utiliza QSettings::NativeFormat. Consulte la documentación del constructor QSettings que esté utilizando para ver si dicho constructor ignora esta función.
Véase también defaultFormat() y format().
void QSettings::setFallbacksEnabled(bool b)
Establece si las fallbacks están habilitadas en b.
Por defecto, las fallbacks están activadas.
Véase también fallbacksEnabled().
[static] void QSettings::setPath(QSettings::Format format, QSettings::Scope scope, const QString &path)
Establece la ruta utilizada para almacenar las configuraciones de format y scope, en path. format puede ser un formato personalizado.
La tabla siguiente resume los valores por defecto:
| Plataforma | Formato | Ámbito | Ruta |
|---|---|---|---|
| Windows | IniFormat | UserScope | FOLDERID_RoamingAppData |
| SystemScope | FOLDERID_ProgramData | ||
| Unix | NativeFormat, IniFormat | UserScope | $HOME/.config |
| SystemScope | /etc/xdg | ||
| macOS e iOS | IniFormat | UserScope | $HOME/.config |
| SystemScope | /etc/xdg |
Las rutas por defecto UserScope en Unix, macOS e iOS ($HOME/.config o $HOME/Settings) pueden ser anuladas por el usuario estableciendo la variable de entorno XDG_CONFIG_HOME. Las rutas por defecto de SystemScope en Unix, macOS e iOS (/etc/xdg) pueden ser anuladas cuando se construye la librería Qt usando la bandera -sysconfdir del script configure (ver QLibraryInfo para más detalles).
Establecer las rutas NativeFormat en Windows, macOS e iOS no tiene ningún efecto.
Advertencia: Esta función no afecta a los objetos QSettings existentes.
Véase también registerFormat().
void QSettings::setValue(QAnyStringView key, const QVariant &value)
Establece el valor del ajuste key en value. Si key ya existe, se sobrescribe el valor anterior.
La búsqueda de claves será sensible o insensible a mayúsculas y minúsculas dependiendo del formato del archivo y del sistema operativo. Para evitar problemas de portabilidad, consulte las reglas Section and Key Syntax.
Ejemplo:
QSettings settings; settings.setValue("interval", 30); settings.value("interval").toInt(); // returns 30 settings.setValue("interval", 6.55); settings.value("interval").toDouble(); // returns 6.55
Nota: En versiones de Qt anteriores a la 6.4, esta función tomaba QString, no QAnyStringView.
Véase también value(), remove(), y contains().
QSettings::Status QSettings::status() const
Devuelve un código de estado que indica el primer error que se encontró QSettings, o QSettings::NoError si no se produjo ningún error.
Tenga en cuenta que QSettings retrasa la realización de algunas operaciones. Por esta razón, es posible que desee llamar a sync() para asegurarse de que los datos almacenados en QSettings se escriben en el disco antes de llamar a status().
Véase también sync().
void QSettings::sync()
Escribe cualquier cambio no guardado en el almacenamiento permanente, y recarga cualquier configuración que haya sido cambiada mientras tanto por otra aplicación.
Esta función es llamada automáticamente desde el destructor de QSettings y por el bucle de eventos a intervalos regulares, por lo que normalmente no necesitas llamarla tú mismo.
Véase también status().
QVariant QSettings::value(QAnyStringView key) const
QVariant QSettings::value(QAnyStringView key, const QVariant &defaultValue) const
Devuelve el valor de la configuración key. Si el ajuste no existe, devuelve defaultValue.
Si no se especifica ningún valor por defecto, se devuelve QVariant.
La búsqueda de claves será sensible o insensible a mayúsculas y minúsculas dependiendo del formato del archivo y del sistema operativo. Para evitar problemas de portabilidad, consulte las reglas de Section and Key Syntax.
Ejemplo:
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 0
Nota: En versiones de Qt anteriores a la 6.4, esta función tomaba QString, no 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.