Sur cette page

Entrée de données Sortie

Cette page donne un aperçu des différentes manières de récupérer et d'enregistrer des données à l'aide de Qt.

Enregistrement et chargement de données

La classe QIODevice est la classe de base pour tous les dispositifs de stockage de fichiers et de données dans les applications Qt Core. Toutes les classes utilisées pour lire et écrire des données héritent de cette classe.

Les exemples de périphériques sont QFile, QBuffer, QTcpSocket et QProcess. QFile est utilisé pour lire et écrire du texte, des fichiers binaires et des ressources, en utilisant l'interface QIODevice. Un QFile peut être utilisé seul ou, plus commodément, avec un QTextStream ou un QDataStream.

La classe QBuffer fournit une interface QIODevice pour QByteArray. QTcpSocket permet au développeur d'établir une connexion TCP et de transférer des flux de données. QProcess est utilisé pour démarrer des programmes externes et pour lire et écrire dans ce processus.

Données sérialisées

L'API Qt prend en charge la sérialisation des données dans plusieurs cas d'utilisation.

  • La prise en charge deJSON dans Qt fournit une API C++ facile à utiliser pour analyser, modifier et enregistrer des données JSON.
  • QDataStream La classe Qt permet de sérialiser des données binaires dans un fichier XML. QIODevice
  • Qt XML C++ Classes fournit des implémentations C++ des normes XML Streaming et DOM pour XML

Base de données

Le module Qt SQL utilise des plugins de pilotes pour communiquer avec plusieurs API de bases de données. Qt dispose de pilotes pour SQLite, MySQL, DB2, Borland InterBase, Oracle, ODBC et PostgreSQL. Il est également possible de développer son propre pilote si Qt ne fournit pas le pilote nécessaire.

Les classes SQL de Qt peuvent être divisées en 3 couches :

CoucheObjectifExemple de classe
  • Couche du pilote
  • Couche API SQL
  • Couche d'interface utilisateur
  • Communication de bas niveau entre la base de données et la couche API SQL
  • Fournir un accès aux bases de données
  • Lier les données d'une base de données à des widgets sensibles aux données

Avec tous les pilotes SQL, à l'exception de SQLite, vous pouvez vous connecter à un serveur qui héberge votre système de base de données. Si vous utilisez le serveur MySQL intégré, vous n'avez pas besoin d'un serveur MySQL pour utiliser ce système de base de données.

Pour savoir comment construire les pilotes de base de données SQL, voir Pilotes de base de données SQL.

Le plugin SQLite de Qt convient parfaitement au stockage local. SQLite est un système de gestion de base de données relationnelle contenu dans une petite bibliothèque C (~350 KiB). Contrairement à d'autres systèmes de gestion de base de données, SQLite n'est pas un processus séparé auquel on accède à partir de l'application cliente, mais une partie intégrante de celle-ci. SQLite fonctionne sur un seul fichier, qui doit être défini comme nom de la base de données lors de l'ouverture d'une connexion. Si le fichier n'existe pas, SQLite essaiera de le créer.

SQLite a quelques restrictions concernant les utilisateurs multiples et les transactions multiples. Si vous lisez ou écrivez sur un fichier à partir de différentes transactions, votre application risque de se bloquer jusqu'à ce qu'une transaction soit validée ou annulée.

Une fois le pilote configuré, les données sont accessibles à l'aide des classes QSqlQueryModel, QSqlTableModel et QSqlRelationalTableModel. QSqlTableModel et QSqlRelationalTableModel fournissent des modèles modifiables qui peuvent être utilisés avec les vues d'éléments de Qt. QSqlTableModel a un accès en lecture/écriture à une seule table, tandis que QSqlRelationalTableModel a un accès en lecture/écriture à la table principale (pas à la table avec la clé étrangère).

Les pages suivantes contiennent des informations sur l'intégration de SQL dans les applications :

Support XML dans Qt

Qt fournit des API pour lire et analyser les flux XML, ainsi que pour écrire dans ces flux. Les classes clés suivantes facilitent ces actions en fournissant l'infrastructure nécessaire :

  • QDomDocument La classe XML représente l'ensemble du document XML sous la forme d'une arborescence et fournit un accès principal aux données du document.
  • QXmlStreamReader La classe XML fournit un analyseur syntaxique pour lire le XML. Il s'agit d'un analyseur XML 1.0 bien formé qui n'inclut pas d'entités externes analysées.
    • Il comprend et résout les espaces de noms XML. Par exemple, dans le cas d'un StartElement, namespaceUri() renvoie l'espace de noms dans lequel se trouve l'élément, et name() renvoie le nom local de l'élément. La combinaison de namespaceUri() et de name() permet d'identifier un élément de manière unique.
    • Cette méthode n'est pas très gourmande en ressources humaines, car elle ne stocke pas l'intégralité de l'arborescence du document XML en mémoire. Il ne stocke que le jeton courant au moment où il est signalé.
  • La classe QXmlStreamWriter fournit un rédacteur XML avec une API de flux simple. C'est la contrepartie de QXmlStreamReader pour l'écriture de XML, et elle opère sur un QIODevice spécifié avec setDevice().
    • Il s'agit d'une API simple qui fournit une fonction dédiée pour chaque jeton XML ou événement que vous souhaitez écrire.
    • Elle se charge de préfixer les espaces de noms sur la base du namespaceUri spécifié lors de l'écriture d'éléments ou d'attributs. Si vous devez utiliser certains préfixes standardisés, vous pouvez forcer le rédacteur à les utiliser en déclarant les espaces de noms manuellement avec writeNamespace() ou writeDefaultNamespace().
    • Il peut formater automatiquement les données XML générées en ajoutant des sauts de ligne et une indentation, ce qui les rend lisibles. Cette fonctionnalité peut être activée à l'aide de la propriété de formatage automatique.

Les rubriques suivantes donnent plus de détails sur la prise en charge de Qt XML:

JSON dans Qt

JSON est une norme ouverte basée sur le texte pour l'échange de données, facile à lire et à analyser. Il est utilisé pour représenter des structures de données simples et des tableaux associatifs, appelés objets. Il est apparenté à JavaScript, mais il s'agit d'une forme de notation indépendante du langage.

Un objet peut prendre deux formes :

Collection de paires nom/valeurListe ordonnée de valeurs
{
          "last_name": "Routledge",
          "first_name": "Ronald",
          "birth_date": 1960
}
"colors": ["green", "blue", "yellow"]

Stockage local

L'API Stockage local permet d'accéder au stockage local hors ligne dans une base de données SQL à partir de QML et de JavaScript.

Ces bases de données sont spécifiques à l'utilisateur et à QML, mais accessibles à toutes les applications QML. Elles sont stockées dans le sous-répertoire Databases de QDeclarativeEngine::offlineStoragePath() en tant que bases de données SQLite(pilotes de base de données SQL).

L'API est conforme à l'API synchrone de l'API de base de données Web HTML5, W3C Working Draft 29 octobre 2009(API de base de données Web HTML5).

Voir Qt Quick Examples - Local Storage pour une démonstration de base de l'utilisation de l'API Local Storage.

Classe QSettings

La classe QSettings fournit un stockage permanent des paramètres de l'application. Une application se souvient généralement des paramètres de la session précédente.

Les paramètres sont stockés différemment selon les plateformes. Par exemple, sous Windows, ils sont stockés dans le registre, tandis que sous macOS, ils sont stockés dans des fichiers XML.

QSettings Les fichiers XML vous permettent de sauvegarder et de restaurer les paramètres d'une application de manière portable. La construction et la destruction d'un objet QSettings sont légères et rapides. Lors de la création d'un objet QSettings, il est conseillé de spécifier non seulement le nom de l'application, mais aussi le nom de votre organisation. Par exemple, le nom de l'organisation :

QSettings settings("MyCompany", "Accountancy");

Ressources

Le système de ressources Qt est un mécanisme indépendant de la plate-forme permettant de stocker des fichiers binaires dans l'exécutable de l'application. C'est pratique si votre application a fréquemment besoin d'un certain fichier ou d'un ensemble de fichiers. Il permet également de se prémunir contre la perte de ce fichier particulier.

Les données relatives aux ressources peuvent être compilées dans le fichier binaire et accessibles immédiatement dans le code de l'application, ou bien une ressource binaire peut être créée dynamiquement et enregistrée par l'application auprès du système de ressources.

Par défaut, les ressources sont accessibles à partir du code de l'application par le même nom de fichier que celui dans lequel elles sont stockées dans l'arborescence des sources, avec un préfixe :/, ou par une URL avec un schéma qrc.

Connectivité

Archivage de fichiers

Un fichier d'archive est une collection de fichiers ou de répertoires qui sont généralement compressés afin de réduire l'espace qu'ils occuperaient sur un disque. Les fichiers d'archive sont par exemple ZIP, TAR, RAR et 7z.

Qt supporte les archives produites par zlib (voir qCompress() et 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.