Entrada Salida de Datos
Esta página proporciona una visión general de varias formas de recuperar y guardar datos utilizando Qt.
Guardar y cargar datos
La clase QIODevice es la clase base para todos los dispositivos de almacenamiento de archivos y datos en Qt Core. Todas las clases que se utilizan para leer y escribir datos heredan de ella.
Ejemplos de dispositivos son QFile, QBuffer, QTcpSocket, y QProcess. QFile se utiliza para leer y escribir texto, archivos binarios y recursos, utilizando la interfaz QIODevice. Un QFile puede utilizarse solo o, más cómodamente, con un QTextStream o QDataStream.
La clase QBuffer proporciona una interfaz QIODevice para QByteArray. QTcpSocket permite al desarrollador establecer una conexión TCP y transferir flujos de datos. QProcess se utiliza para iniciar programas externos y para leer y escribir en ese proceso.
- Entrada/Salida y Redes (lista de clases relacionadas con E/S)
- Funciones de fichero y flujo de datos
Datos serializados
La API de Qt proporciona soporte para la serialización de datos para varios casos de uso.
- El soporteJSON en Qt proporciona una API C++ fácil de usar para analizar, modificar y guardar datos JSON.
- QDataStream proporciona serialización de datos binarios a una clase QIODevice
- Qt XML C++ Classes proporciona implementaciones C++ de los estándares XML Streaming y DOM para XML
Base de datos
El módulo Qt SQL utiliza plugins de controladores para comunicarse con varias API de bases de datos. Qt tiene controladores para SQLite, MySQL, DB2, Borland InterBase, Oracle, ODBC y PostgreSQL. También es posible desarrollar tu propio controlador si Qt no proporciona el controlador necesario.
Las clases SQL de Qt pueden dividirse en 3 capas:
| Capa | Propósito | Clase de ejemplo |
|---|---|---|
|
|
|
Con todos los controladores SQL, a excepción de SQLite, puedes conectarte a un servidor que aloje tu sistema de base de datos. Si utilizas el servidor MySQL incrustado, no necesitas un servidor MySQL para utilizar ese sistema de base de datos.
Para obtener instrucciones sobre cómo crear los controladores de bases de datos SQL, consulta Controladores de bases de datos SQL.
El plugin Qt SQLite es muy adecuado para el almacenamiento local. SQLite es un sistema de gestión de bases de datos relacionales contenido en una pequeña (~350 KiB) librería en C. A diferencia de otros sistemas de gestión de bases de datos, SQLite no es un proceso separado al que se accede desde la aplicación cliente, sino una parte integral de la misma. SQLite opera sobre un único archivo, que debe establecerse como nombre de la base de datos al abrir una conexión. Si el fichero no existe, SQLite intentará crearlo.
SQLite tiene algunas restricciones en cuanto a usuarios múltiples y transacciones múltiples. Si estás leyendo o escribiendo en un fichero desde diferentes transacciones, tu aplicación podría congelarse hasta que una de las transacciones haga commit o roll back.
Una vez configurada la parte del controlador, se puede acceder a los datos utilizando las clases, QSqlQueryModel, QSqlTableModel, y QSqlRelationalTableModel. QSqlTableModel y QSqlRelationalTableModel proporcionan modelos editables que pueden utilizarse con las vistas de elementos de Qt. QSqlTableModel tiene acceso de lectura/escritura a una única tabla, mientras que QSqlRelationalTableModel tiene acceso de lectura/escritura a la tabla principal (no a la tabla con la clave externa).
Las siguientes páginas contienen información sobre la incorporación de SQL en las aplicaciones:
Soporte XML en Qt
Qt proporciona APIs para leer y analizar flujos XML, y también para escribir en estos flujos. Las siguientes clases clave facilitan estas acciones proporcionando la infraestructura necesaria:
- QDomDocument representa el documento XML completo como un árbol de documentos y proporciona acceso primario a los datos del documento.
- Tiene varias funciones para crear datos del documento, por ejemplo, createElement(), createTextNode(), createComment(), createCDATASection(), createProcessingInstruction(), createAttribute(), y createEntityReference().
- QXmlStreamReader proporciona un analizador sintáctico para leer XML. Es un analizador XML 1.0 bien formado que no incluye entidades externas analizadas.
- Comprende y resuelve los espacios de nombres XML. Por ejemplo, en el caso de un StartElement, namespaceUri() devuelve el espacio de nombres en el que se encuentra el elemento, y name() devuelve el nombre local del elemento. La combinación de namespaceUri() y name() identifica un elemento de forma única.
- No consume mucha CPU, ya que no almacena todo el árbol del documento XML en memoria. Sólo almacena el token actual en el momento en que se informa.
- La clase QXmlStreamWriter proporciona un escritor XML con una API de flujo simple. Es la contraparte de QXmlStreamReader para escribir XML, y opera en un QIODevice especificado con setDevice().
- Es una API simple que proporciona una función dedicada para cada token XML o evento que quieras escribir.
- Se encarga de poner prefijos a los espacios de nombres basándose en el namespaceUri especificado mientras se escriben elementos o atributos. Si tienes que usar ciertos prefijos estandarizados, puedes forzar al escritor a usarlos declarando los espacios de nombres manualmente con writeNamespace() o writeDefaultNamespace().
- Puede formatear automáticamente los datos XML generados añadiendo saltos de línea y sangría, haciéndolos legibles. Esta característica puede activarse con la propiedad auto-formatting.
Los siguientes temas proporcionan más información sobre la compatibilidad con Qt XML:
JSON en Qt
JSON es un estándar abierto basado en texto para el intercambio de datos que es fácil de leer y analizar. Se utiliza para representar estructuras de datos simples y matrices asociativas, llamadas objetos. Está relacionado con JavaScript, pero es una forma de notación independiente del lenguaje.
Un objeto puede adoptar 2 formas
| Colección de pares nombre/valor | Lista ordenada de valores |
|---|---|
{
"last_name": "Routledge",
"first_name": "Ronald",
"birth_date": 1960
} | "colors": ["green", "blue", "yellow"] |
Almacenamiento local
La API de almacenamiento local ofrece la posibilidad de acceder al almacenamiento local sin conexión en una base de datos SQL desde QML y JavaScript.
Estas bases de datos son específicas del usuario y de QML, pero accesibles a todas las aplicaciones QML. Se almacenan en el subdirectorio Databases de QDeclarativeEngine::offlineStoragePath() como bases de datos SQLite(controladores de bases de datos SQL).
La API se ajusta a la API síncrona de la API de bases de datos web HTML5, W3C Working Draft 29 de octubre de 2009(HTML5 Web Database API).
Consulte Qt Quick Ejemplos - Almacenamiento local para ver una demostración básica del uso de la API de almacenamiento local.
Clase QSettings
La clase QSettings proporciona almacenamiento persistente de la configuración de la aplicación. Una aplicación normalmente recuerda sus ajustes de la sesión anterior.
Las configuraciones se almacenan de forma diferente en las distintas plataformas. Por ejemplo, en Windows se almacenan en el registro, mientras que en macOS se almacenan en archivos XML.
QSettings le permiten guardar y restaurar la configuración de la aplicación de forma portátil. La construcción y destrucción de un objeto de QSettings es ligera y rápida. Al crear un objeto de QSettings, es una buena práctica especificar no sólo el nombre de la aplicación, sino también el nombre de su organización. Por ejemplo:
QSettings settings("MyCompany", "Accountancy");
Recursos
El sistema de recursos de Qt es un mecanismo independiente de la plataforma para almacenar archivos binarios en el ejecutable de la aplicación. Esto es útil si su aplicación necesita con frecuencia un determinado archivo, o conjunto de archivos. También protege contra la pérdida de ese archivo en particular.
Los datos de los recursos se pueden compilar en el binario y acceder a ellos inmediatamente en el código de la aplicación, o se puede crear un recurso binario dinámicamente y registrarlo en el sistema de recursos por parte de la aplicación.
Por defecto, los recursos son accesibles desde el código de la aplicación por el mismo nombre de archivo con el que están almacenados en el árbol de fuentes, con un prefijo :/, o por una URL con un esquema qrc.
Conectividad
Archivo de ficheros
Un fichero de archivo es una colección de ficheros o directorios que generalmente se comprimen para reducir el espacio que de otro modo consumirían en una unidad de disco. Ejemplos de archivos comprimidos son ZIP, TAR, RAR y 7z.
Qt admite archivos comprimidos con zlib (consulte qCompress() y qUncompress()).
© 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.