Sur cette page

QMimeDatabase Class

La classe `QMimeDatabase` gère une base de données de types MIME. En savoir plus...

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 thread-safe.

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 est introuvable 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 souhaitant définir des types MIME personnalisés doivent installer un fichier XML dans les emplacements où sont recherchées les définitions MIME. Ces emplacements peuvent être interrogés à l’aide de

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 de définitions MIME dans /opt/myapp/share/mime/packages/.

Voici un exemple de code XML MIME :

<?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 MIME XML, y compris la définition de la « signature » permettant de détecter les types MIME en fonction des données, consultez 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 chemin », où chemin correspondrait à /opt/myapp/share/mime dans l’exemple ci-dessus. Veillez à exécuter cette commande lors de l’installation du fichier de définition des types 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 également QMimeType et MIME Type Browser.

Documentation sur les types de membres

enum QMimeDatabase::MatchMode

Cette énumération définit la manière dont s'effectue la mise en correspondance d'un fichier avec un type MIME.

ConstanteValeurDescription
QMimeDatabase::MatchDefault0x0Le nom du fichier et son contenu sont tous deux utilisés pour rechercher une correspondance
QMimeDatabase::MatchExtension0x1Seul le nom du fichier est utilisé pour rechercher une correspondance
QMimeDatabase::MatchContent0x2Le contenu du fichier est utilisé pour rechercher une correspondance

Documentation des fonctions membres

QMimeDatabase::QMimeDatabase()

Crée un objet QMimeDatabase.

Vous pouvez sans problème créer une instance de QMimeDatabase à chaque fois que vous devez effectuer une recherche. L'analyse des types MIME s'effectue à la demande (lorsque shared-mime-info est installé) ou lors de la création de la toute première instance (lors de l'analyse directe de fichiers XML).

[noexcept] QMimeDatabase::~QMimeDatabase()

Supprime l'objet « QMimeDatabase ».

QList<QMimeType> QMimeDatabase::allMimeTypes() const

Renvoie la liste de tous les types MIME disponibles.

Cela peut s'avérer utile pour afficher tous les types MIME à l'utilisateur, par exemple dans un éditeur de types MIME. Ne l'utilisez toutefois pas dans d'autres cas, sauf si cela est vraiment nécessaire ; privilégiez les méthodes mimeTypeForXxx() pour des raisons de performances.

QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const

Renvoie un type MIME correspondant aux données contenues dans device.

Un type MIME valide est toujours renvoyé. Si les données de 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 à aucune donnée de type MIME connue, 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 a priorité sur le contenu, mais ce dernier sera utilisé si l’extension est inconnue ou correspond à plusieurs types MIME. Si fileInfo est un lien symbolique Unix, c’est le fichier auquel il fait référence qui sera utilisé à la place. Si le fichier ne correspond à aucun modèle ou donnée connu, 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. Le fichier n'a même pas besoin d'exister. 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 revient à appeler ` mimeTypeForData ` avec ` QFile ` comme périphérique d’entrée.

fileInfo peut faire référence à un chemin absolu ou relatif.

Voir également QMimeType::isDefault() et mimeTypeForData().

QMimeType QMimeDatabase::mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = MatchDefault) const

Renvoie le type MIME du fichier nommé « fileName » à l'aide de la méthode 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 fournies par fileName et device.

Cette surcharge peut s’avérer utile lorsque le fichier est distant et que l’on a commencé à télécharger certaines de ses données sur un périphérique. Cela permet également d’effectuer une correspondance complète du type MIME pour les fichiers distants.

Si le périphérique n’est pas ouvert, cette fonction l’ouvrira, puis le fermera une fois la détection du type MIME terminée.

Un type MIME valide est toujours renvoyé. Si les données d’ device ne correspondent à aucun type MIME connu, le type MIME par défaut (application/octet-stream) est renvoyé.

Cette méthode examine à la fois le nom du fichier et son contenu, si nécessaire. L’extension du fichier a la priorité sur le contenu, mais ce dernier sera utilisé si l’extension est inconnue ou correspond à plusieurs types MIME.

QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const

Renvoie un type MIME pour l'fileName et le périphérique data indiqués.

Cette surcharge peut s’avérer utile lorsque le fichier est distant et que le téléchargement d’une partie de ses données a déjà commencé. Elle permet également d’effectuer une correspondance complète du type MIME pour les fichiers distants.

Un type MIME valide est toujours renvoyé. Si data ne correspond à 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 du fichier et son contenu, si nécessaire. L’extension du fichier a la priorité sur le contenu, mais ce dernier sera utilisé si l’extension est inconnue ou correspond à plusieurs types MIME.

QMimeType QMimeDatabase::mimeTypeForName(const QString &nameOrAlias) const

Renvoie un type MIME pour nameOrAlias ou un type non valide si aucun n'est trouvé.

QMimeType QMimeDatabase::mimeTypeForUrl(const QUrl &url) const

Renvoie le type MIME de l'adresse url.

Si l'URL correspond à un fichier local, cette méthode appelle mimeTypeForFile.

Sinon, la correspondance s'effectue uniquement sur la base du nom de fichier, sauf pour les protocoles où les noms de fichiers n'ont pas beaucoup de sens, 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 à aucune donnée de type MIME connue, 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 de 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 ne tente 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 également mimeTypeForFile().

QString QMimeDatabase::suffixForFileName(const QString &fileName) const

Renvoie le suffixe associé au fichier fileName, tel qu'il est répertorié dans la base de données MIME.

Cela permet de présélectionner « tar.bz2 » pour foo.tar.bz2, mais uniquement « 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.