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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QMimeDatabase::MatchDefault | 0x0 | Sowohl der Dateiname als auch der Inhalt werden für die Suche nach einer Übereinstimmung herangezogen |
QMimeDatabase::MatchExtension | 0x1 | Nur der Dateiname wird für die Suche nach einer Übereinstimmung herangezogen |
QMimeDatabase::MatchContent | 0x2 | Der 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.