Auf dieser Seite

QMimeDatabase Class

Die Klasse „QMimeDatabase“ verwaltet eine Datenbank mit MIME-Typen. Mehr...

Kopfzeile: #include <QMimeDatabase>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Hinweis: Alle Funktionen dieser Klasse sind threadsicher.

Öffentliche Typen

enum MatchMode { MatchDefault, MatchExtension, MatchContent }

Öffentliche Funktionen

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

Ausführliche Beschreibung

Die MIME-Typ-Datenbank wird vom Projekt „shared-mime-info“ auf freedesktop.org bereitgestellt. Wenn die MIME-Typ-Datenbank auf dem System nicht gefunden werden kann – was bei den meisten Windows-, macOS- und iOS-Systemen der Fall ist –, verwendet Qt eine eigene Kopie davon.

Anwendungen, die benutzerdefinierte MIME-Typen definieren möchten, müssen eine XML-Datei an den Speicherorten installieren, an denen nach MIME-Definitionen gesucht wird. Diese Speicherorte können mit

using namespace Qt::StringLiterals;
// ...
QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "mime/packages"_L1,
                          QStandardPaths::LocateDirectory);

Auf einem typischen Unix-System ist dies /usr/share/mime/packages/, es ist jedoch auch möglich, die Liste der Verzeichnisse durch Setzen der Umgebungsvariable „ XDG_DATA_DIRS “ zu erweitern. Wenn beispielsweise /opt/myapp/share zu „ XDG_DATA_DIRS “ hinzugefügt wird, wird /opt/myapp/share/mime/packages/ nach MIME-Definitionen durchsucht.

Hier ist ein Beispiel für 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>

Weitere Einzelheiten zur Syntax von XML-MIME-Definitionen, einschließlich der Definition von „Magic“-Werten zur Erkennung von MIME-Typen auch anhand von Daten, finden Sie in der Spezifikation „Shared Mime Info“ unter http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html

Auf Unix-Systemen wird zur Leistungssteigerung ein Binär-Cache verwendet. Dieser Cache wird mit dem Befehl „update-mime-database Pfad“ generiert, wobei „Pfad“ im obigen Beispiel /opt/myapp/share/mime wäre. Stellen Sie sicher, dass Sie diesen Befehl bei der Installation der MIME-Typ-Definitionsdatei ausführen.

QMimeDatabase db;
QMimeType mime = db.mimeTypeForFile(fileName);
if (mime.inherits("text/plain")) {
    // The file is plain text, we can display it in a QTextEdit
}

Siehe auch QMimeType und MIME-Typ-Browser.

Dokumentation zu Mitgliedstypen

enum QMimeDatabase::MatchMode

Diese Enumeration legt fest, wie die Zuordnung einer Datei zu einem MIME-Typ erfolgt.

KonstanteWertBeschreibung
QMimeDatabase::MatchDefault0x0Sowohl der Dateiname als auch der Inhalt werden für die Suche nach einer Übereinstimmung herangezogen
QMimeDatabase::MatchExtension0x1Nur der Dateiname wird für die Suche nach einer Übereinstimmung herangezogen
QMimeDatabase::MatchContent0x2Der Dateiinhalt wird zur Suche nach einer Übereinstimmung verwendet

Dokumentation der Mitgliedsfunktionen

QMimeDatabase::QMimeDatabase()

Erstellt ein QMimeDatabase-Objekt.

Es ist völlig in Ordnung, bei jeder Abfrage eine Instanz von `QMimeDatabase` zu erstellen. Das Parsen der MIME-Typen erfolgt bei Bedarf (wenn `shared-mime-info` installiert ist) oder beim Erstellen der allerersten Instanz (beim direkten Parsen von XML-Dateien).

[noexcept] QMimeDatabase::~QMimeDatabase()

Löscht das „ QMimeDatabase “-Objekt.

QList<QMimeType> QMimeDatabase::allMimeTypes() const

Gibt die Liste aller verfügbaren MIME-Typen zurück.

Dies kann nützlich sein, um dem Benutzer alle MIME-Typen anzuzeigen, beispielsweise in einem MIME-Typ-Editor. Verwenden Sie diese Funktion in anderen Fällen jedoch nur, wenn es wirklich notwendig ist; aus Leistungsgründen sollten Sie stattdessen die Methoden ` mimeTypeForXxx()` bevorzugen.

QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const

Gibt einen MIME-Typ für die Daten unter device zurück.

Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn die Daten unter device keinem bekannten MIME-Typ entsprechen, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.

QMimeType QMimeDatabase::mimeTypeForData(const QByteArray &data) const

Gibt einen MIME-Typ für „ data “ zurück.

Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn data mit keinem bekannten MIME-Typ übereinstimmt, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.

QMimeType QMimeDatabase::mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = MatchDefault) const

Gibt einen MIME-Typ für fileInfo zurück.

Es wird immer ein gültiger MIME-Typ zurückgegeben.

Der standardmäßige Abgleichalgorithmus berücksichtigt sowohl den Dateinamen als auch den Dateiinhalt, falls erforderlich. Die Dateiendung hat Vorrang vor dem Inhalt, doch der Inhalt wird herangezogen, wenn die Dateiendung unbekannt ist oder mehreren MIME-Typen entspricht. Ist fileInfo ein symbolischer Link unter Unix, wird stattdessen die Datei verwendet, auf die er verweist. Wenn die Datei keinem bekannten Muster oder keinen bekannten Daten entspricht, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.

Wenn „ mode “ auf „ MatchExtension “ gesetzt ist, wird nur der Dateiname verwendet, nicht der Dateiinhalt. Die Datei muss nicht einmal existieren. Wenn der Dateiname keinem bekannten Muster entspricht, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben. Wenn mehrere MIME-Typen zu dieser Datei passen, wird der erste (alphabetisch) zurückgegeben.

Wenn „ mode “ auf „ MatchContent “ gesetzt ist und die Datei lesbar ist, wird ausschließlich der Dateiinhalt zur Bestimmung des MIME-Typs herangezogen. Dies entspricht dem Aufruf von „ mimeTypeForData “ mit „ QFile “ als Eingabegerät.

fileInfo kann sich auf einen absoluten oder relativen Pfad beziehen.

Siehe auch QMimeType::isDefault() und mimeTypeForData().

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

Gibt den MIME-Typ der Datei „ fileName “ unter Verwendung von „ mode “ zurück.

Dies ist eine überladene Funktion.

QMimeType QMimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const

Gibt einen MIME-Typ für die angegebenen Daten unter fileName und device zurück.

Diese Überladung kann nützlich sein, wenn sich die Datei auf einem Remote-Server befindet und wir bereits damit begonnen haben, einen Teil ihrer Daten auf ein Gerät herunterzuladen. Auf diese Weise ist auch für Remote-Dateien eine vollständige MIME-Typ-Erkennung möglich.

Ist das Gerät nicht geöffnet, wird es durch diese Funktion geöffnet und nach Abschluss der MIME-Typ-Erkennung wieder geschlossen.

Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn die Daten unter „ device “ keinem bekannten MIME-Typ entsprechen, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.

Diese Methode berücksichtigt bei Bedarf sowohl den Dateinamen als auch den Dateiinhalt. Die Dateiendung hat Vorrang vor dem Inhalt; der Inhalt wird jedoch herangezogen, wenn die Dateiendung unbekannt ist oder mehreren MIME-Typen entspricht.

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

Gibt einen MIME-Typ für die angegebene URL fileName und das Gerät data zurück.

Diese Überladung kann nützlich sein, wenn sich die Datei auf einem Remote-Server befindet und wir bereits mit dem Herunterladen einiger ihrer Daten begonnen haben. Dadurch ist auch bei Remote-Dateien ein vollständiger MIME-Typ-Abgleich möglich.

Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn data mit keinen bekannten MIME-Typdaten übereinstimmt, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.

Diese Methode berücksichtigt bei Bedarf sowohl den Dateinamen als auch den Dateiinhalt. Die Dateiendung hat Vorrang vor dem Inhalt, doch der Inhalt wird herangezogen, wenn die Dateiendung unbekannt ist oder mehreren MIME-Typen entspricht.

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

Gibt einen MIME-Typ für „ nameOrAlias “ zurück oder einen ungültigen, falls keiner gefunden wird.

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

Gibt den MIME-Typ für url zurück.

Handelt es sich bei der URL um eine lokale Datei, wird mimeTypeForFile aufgerufen.

Andernfalls erfolgt der Abgleich ausschließlich anhand des Dateinamens, außer bei Protokollen, bei denen Dateinamen keine große Rolle spielen, wie beispielsweise HTTP. Diese Methode gibt für HTTP-URLs immer den Standard-MIME-Typ zurück; verwenden Sie „ QNetworkAccessManager “, um HTTP-URLs korrekt zu verarbeiten.

Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn url keine Übereinstimmung mit bekannten MIME-Typ-Daten findet, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.

QList<QMimeType> QMimeDatabase::mimeTypesForFileName(const QString &fileName) const

Gibt die MIME-Typen für den Dateinamen „ fileName “ zurück.

Wenn der Dateiname keinem bekannten Muster entspricht, wird eine leere Liste zurückgegeben. Wenn mehrere MIME-Typen zu dieser Datei passen, werden alle zurückgegeben.

Diese Funktion versucht nicht, die Datei zu öffnen. Um bei der Ermittlung des MIME-Typs auch den Inhalt zu berücksichtigen, verwenden Sie stattdessen mimeTypeForFile() oder mimeTypeForFileNameAndData().

Siehe auch ` mimeTypeForFile()`.

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

Gibt die in der MIME-Datenbank hinterlegte Dateiendung für die Datei „ fileName “ zurück.

Dadurch kann für „foo.tar.bz2“ „tar.bz2“ vorab ausgewählt werden, für „my.file.with.dots.txt“ jedoch weiterhin nur „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.