QMimeDatabase Class
La classe QMimeDatabase gère une base de données des types MIME. Plus d'informations...
| En-tête : | #include <QMimeDatabase> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Remarque : toutes les fonctions de cette classe sont sûres pour les threads.
Types publics
| enum | MatchMode { MatchDefault, MatchExtension, MatchContent } |
Fonctions publiques
| QMimeDatabase() | |
| ~QMimeDatabase() | |
| QList<QMimeType> | allMimeTypes() const |
| QMimeType | mimeTypeForData(QIODevice *device) const |
| QMimeType | mimeTypeForData(const QByteArray &data) const |
| QMimeType | mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = MatchDefault) const |
| QMimeType | mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = MatchDefault) const |
| QMimeType | mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const |
| QMimeType | mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const |
| QMimeType | mimeTypeForName(const QString &nameOrAlias) const |
| QMimeType | mimeTypeForUrl(const QUrl &url) const |
| QList<QMimeType> | mimeTypesForFileName(const QString &fileName) const |
| QString | suffixForFileName(const QString &fileName) const |
Description détaillée
La base de données des types MIME est fournie par le projet shared-mime-info de freedesktop.org. Si la base de données des types MIME ne peut pas être trouvée sur le système, comme c'est le cas sur la plupart des systèmes Windows, macOS et iOS, Qt utilisera sa propre copie.
Les applications qui souhaitent définir des types MIME personnalisés doivent installer un fichier XML dans les emplacements recherchés pour les définitions MIME. Ces emplacements peuvent être interrogés avec
using namespace Qt::StringLiterals; // ... QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "mime/packages"_L1, QStandardPaths::LocateDirectory);
Sur un système Unix classique, il s'agit de /usr/share/mime/packages/, mais il est également possible d'étendre la liste des répertoires en définissant la variable d'environnement XDG_DATA_DIRS. Par exemple, l'ajout de /opt/myapp/share à XDG_DATA_DIRS entraînera la recherche des définitions MIME dans /opt/myapp/share/mime/packages/.
Voici un exemple de MIME XML :
<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/vnd.qt.qmakeprofile"> <comment xml:lang="en">Qt qmake Profile</comment> <glob pattern="*.pro" weight="50"/> </mime-type> </mime-info>
Pour plus de détails sur la syntaxe des définitions XML MIME, y compris la définition de la "magie" afin de détecter les types MIME basés sur les données, lisez la spécification Shared Mime Info à l'adresse http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html.
Sur les systèmes Unix, un cache binaire est utilisé pour améliorer les performances. Ce cache est généré par la commande "update-mime-database path", où path serait /opt/myapp/share/mime dans l'exemple ci-dessus. Veillez à exécuter cette commande lors de l'installation du fichier de définition du type MIME.
QMimeDatabase db; QMimeType mime = db.mimeTypeForFile(fileName); if (mime.inherits("text/plain")) { // The file is plain text, we can display it in a QTextEdit }
Voir aussi QMimeType et MIME Type Browser.
Documentation sur les types de membres
enum QMimeDatabase::MatchMode
Cette énumération spécifie la manière dont la correspondance entre un fichier et un type MIME est effectuée.
| Constante | Valeur | Description |
|---|---|---|
QMimeDatabase::MatchDefault | 0x0 | Le nom et le contenu du fichier sont utilisés pour rechercher une correspondance. |
QMimeDatabase::MatchExtension | 0x1 | Seul le nom du fichier est utilisé pour rechercher une correspondance. |
QMimeDatabase::MatchContent | 0x2 | Le contenu du fichier est utilisé pour rechercher une correspondance. |
Documentation des fonctions membres
QMimeDatabase::QMimeDatabase()
Construit un objet QMimeDatabase.
Il est parfaitement acceptable de créer une instance de QMimeDatabase chaque fois que vous avez besoin d'effectuer une recherche. L'analyse des mimetypes est effectuée à la demande (lorsque shared-mime-info est installé) ou lorsque la toute première instance est construite (lors de l'analyse directe de fichiers XML).
[noexcept] QMimeDatabase::~QMimeDatabase()
Détruit l'objet QMimeDatabase.
QList<QMimeType> QMimeDatabase::allMimeTypes() const
Renvoie la liste de tous les types MIME disponibles.
Cela peut être utile pour afficher tous les types MIME à l'utilisateur, par exemple dans un éditeur de types MIME. Ne l'utilisez pas à moins que cela ne soit vraiment nécessaire dans d'autres cas, mais préférez utiliser les méthodes mimeTypeForXxx() pour des raisons de performance.
QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const
Renvoie un type MIME pour les données contenues dans device.
Un type MIME valide est toujours renvoyé. Si les données contenues dans device ne correspondent à aucun type MIME connu, le type MIME par défaut (application/octet-stream) est renvoyé.
QMimeType QMimeDatabase::mimeTypeForData(const QByteArray &data) const
Renvoie un type MIME pour data.
Un type MIME valide est toujours renvoyé. Si data ne correspond à aucun type MIME connu, le type MIME par défaut (application/octet-stream) est renvoyé.
QMimeType QMimeDatabase::mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = MatchDefault) const
Renvoie un type MIME pour fileInfo.
Un type MIME valide est toujours renvoyé.
L'algorithme de correspondance par défaut examine à la fois le nom du fichier et son contenu, si nécessaire. L'extension du fichier est prioritaire sur le contenu, mais le contenu sera utilisé si l'extension du fichier est inconnue ou correspond à plusieurs types MIME. Si fileInfo est un lien symbolique Unix, le fichier auquel il fait référence sera utilisé à la place. Si le fichier ne correspond à aucun modèle ou données connus, le type MIME par défaut (application/octet-stream) est renvoyé.
Lorsque mode est défini sur MatchExtension, seul le nom du fichier est utilisé, et non son contenu. Il n'est même pas nécessaire que le fichier existe. Si le nom du fichier ne correspond à aucun modèle connu, le type MIME par défaut (application/octet-stream) est renvoyé. Si plusieurs types MIME correspondent à ce fichier, le premier (par ordre alphabétique) est renvoyé.
Lorsque mode est défini sur MatchContent et que le fichier est lisible, seul le contenu du fichier est utilisé pour déterminer le type MIME. Cela équivaut à appeler mimeTypeForData avec QFile comme périphérique d'entrée.
fileInfo peut faire référence à un chemin absolu ou relatif.
Voir aussi QMimeType::isDefault() et mimeTypeForData().
QMimeType QMimeDatabase::mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = MatchDefault) const
Renvoie un type MIME pour le fichier nommé fileName en utilisant mode.
Il s'agit d'une fonction surchargée.
QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const
Renvoie un type MIME pour les données fileName et device.
Cette surcharge peut être utile lorsque le fichier est distant et que nous avons commencé à télécharger certaines de ses données sur un périphérique. Cela permet également de faire une correspondance complète entre les types MIME pour les fichiers distants.
Si le périphérique n'est pas ouvert, il sera ouvert par cette fonction et fermé après la détection du type MIME.
Un type MIME valide est toujours renvoyé. Si les données de device ne correspondent à aucune donnée de type MIME connue, le type MIME par défaut (application/octet-stream) est renvoyé.
Cette méthode examine à la fois le nom et le contenu du fichier, si nécessaire. L'extension du fichier est prioritaire sur le contenu, mais le contenu sera utilisé si l'extension du fichier est inconnue ou correspond à plusieurs types MIME.
QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const
Renvoie un type MIME pour le fichier fileName et le périphérique data.
Cette surcharge peut être utile lorsque le fichier est distant et que nous avons commencé à télécharger certaines de ses données. Elle permet également d'effectuer une correspondance complète des types MIME pour les fichiers distants.
Un type MIME valide est toujours renvoyé. Si data ne correspond à aucun type MIME connu, le type MIME par défaut (application/octet-stream) est renvoyé.
Cette méthode examine à la fois le nom et le contenu du fichier, si nécessaire. L'extension du fichier a la priorité sur le contenu, mais le contenu sera utilisé si l'extension du fichier est inconnue ou correspond à plusieurs types MIME.
QMimeType QMimeDatabase::mimeTypeForName(const QString &nameOrAlias) const
Renvoie un type MIME pour nameOrAlias ou un type invalide si aucun n'est trouvé.
QMimeType QMimeDatabase::mimeTypeForUrl(const QUrl &url) const
Renvoie un type MIME pour url.
Si l'URL est un fichier local, cela appelle mimeTypeForFile.
Sinon, la correspondance se fait uniquement sur la base du nom de fichier, sauf pour les schémas où les noms de fichiers ne signifient pas grand-chose, comme HTTP. Cette méthode renvoie toujours le type MIME par défaut pour les URL HTTP, utilisez QNetworkAccessManager pour gérer correctement les URL HTTP.
Un type MIME valide est toujours renvoyé. Si url ne correspond à aucun type MIME connu, le type MIME par défaut (application/octet-stream) est renvoyé.
QList<QMimeType> QMimeDatabase::mimeTypesForFileName(const QString &fileName) const
Renvoie les types MIME correspondant au nom de fichier fileName.
Si le nom du fichier ne correspond à aucun modèle connu, une liste vide est renvoyée. Si plusieurs types MIME correspondent à ce fichier, ils sont tous renvoyés.
Cette fonction n'essaie pas d'ouvrir le fichier. Pour utiliser également le contenu lors de la détermination du type MIME, utilisez plutôt mimeTypeForFile() ou mimeTypeForFileNameAndData().
Voir aussi mimeTypeForFile().
QString QMimeDatabase::suffixForFileName(const QString &fileName) const
Renvoie le suffixe du fichier fileName, tel qu'il est connu par la base de données MIME.
Cela permet de présélectionner "tar.bz2" pour foo.tar.bz2, mais seulement "txt" pour my.file.with.dots.txt.
© 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.