QMimeDatabase Class
Die Klasse QMimeDatabase verwaltet eine Datenbank von 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 in dieser Klasse sind thread-sicher.
Ö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 |
Detaillierte Beschreibung
Die MIME-Typ-Datenbank wird vom freedesktop.org shared-mime-info-Projekt bereitgestellt. Wenn die MIME-Typ-Datenbank nicht auf dem System gefunden werden kann, was bei den meisten Windows-, macOS- und iOS-Systemen der Fall ist, verwendet Qt seine eigene Kopie davon.
Anwendungen, die benutzerdefinierte MIME-Typen definieren möchten, müssen eine XML-Datei an den Orten installieren, an denen nach MIME-Definitionen gesucht wird. Diese Speicherorte können abgefragt werden mit
QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "mime/packages"_L1, QStandardPaths::LocateDirectory);
Auf einem typischen Unix-System ist dies /usr/share/mime/packages/, aber es ist auch möglich, die Liste der Verzeichnisse zu erweitern, indem man die Umgebungsvariable XDG_DATA_DIRS
setzt. Das Hinzufügen von /opt/myapp/share zu XDG_DATA_DIRS
führt beispielsweise dazu, dass /opt/myapp/share/mime/packages/ nach MIME-Definitionen durchsucht wird.
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 über die Syntax von XML-MIME-Definitionen, einschließlich der Definition von "Magie", um MIME-Typen auch anhand von Daten zu erkennen, finden Sie in der Spezifikation von Shared Mime Info unter http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
Auf Unix-Systemen wird ein binärer Cache verwendet, um die Leistung zu erhöhen. Dieser Cache wird mit dem Befehl "update-mime-database path" erzeugt, wobei der Pfad im obigen Beispiel /opt/myapp/share/mime wäre. Stellen Sie sicher, dass Sie diesen Befehl ausführen, wenn Sie die MIME-Typ-Definitionsdatei installieren.
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 Type Browser.
Dokumentation der Mitgliedstypen
enum QMimeDatabase::MatchMode
Diese Aufzählung gibt an, wie die Zuordnung einer Datei zu einem MIME-Typ durchgeführt wird.
Konstante | Wert | Beschreibung |
---|---|---|
QMimeDatabase::MatchDefault | 0x0 | Sowohl der Dateiname als auch der Inhalt werden verwendet, um nach einer Übereinstimmung zu suchen |
QMimeDatabase::MatchExtension | 0x1 | Nur der Dateiname wird für die Suche nach einer Übereinstimmung verwendet |
QMimeDatabase::MatchContent | 0x2 | Der Inhalt der Datei wird für die Suche nach einer Übereinstimmung verwendet |
Dokumentation der Mitgliedsfunktionen
QMimeDatabase::QMimeDatabase()
Konstruiert ein QMimeDatabase-Objekt.
Es ist völlig in Ordnung, jedes Mal eine Instanz von QMimeDatabase zu erstellen, wenn Sie eine Suche durchführen müssen. Das Parsen von Mimetypes erfolgt bei Bedarf (wenn shared-mime-info installiert ist) oder wenn die allererste Instanz erstellt wird (beim direkten Parsen von XML-Dateien).
[noexcept]
QMimeDatabase::~QMimeDatabase()
Zerstört das Objekt QMimeDatabase.
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, z. B. in einem MIME-Typ-Editor. Verwenden Sie diese Funktion nur, wenn es wirklich notwendig ist, und verwenden Sie aus Leistungsgründen lieber die Methoden mimeTypeForXxx().
QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const
Gibt einen MIME-Typ für die Daten in device zurück.
Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn die Daten in device mit keinem bekannten MIME-Typ übereinstimmen, 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 Standardabgleichsalgorithmus prüft sowohl den Dateinamen als auch den Dateiinhalt, falls erforderlich. Die Dateierweiterung hat Vorrang vor dem Inhalt, aber der Inhalt wird verwendet, wenn die Dateierweiterung unbekannt ist oder auf mehrere MIME-Typen passt. Wenn fileInfo ein symbolischer Unix-Link ist, wird stattdessen die Datei, auf die er verweist, verwendet. Wenn die Datei keinem bekannten Muster oder 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 Inhalt der Datei. 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 (in alphabetischer Reihenfolge) zurückgegeben.
Wenn mode auf MatchContent gesetzt ist und die Datei lesbar ist, wird nur der Inhalt der Datei zur Bestimmung des MIME-Typs verwendet. Dies entspricht dem Aufruf von mimeTypeForData mit einem 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 einen MIME-Typ für die Datei mit dem Namen 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 fileName und device Daten zurück.
Diese Überladung kann nützlich sein, wenn die Datei entfernt ist und wir begonnen haben, einige ihrer Daten auf ein Gerät herunterzuladen. Dies ermöglicht eine vollständige MIME-Typ-Übereinstimmung auch für entfernte Dateien.
Wenn das Gerät nicht geöffnet ist, wird es von dieser 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 von device mit keinem bekannten MIME-Typ übereinstimmen, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.
Diese Methode prüft sowohl den Dateinamen als auch den Dateiinhalt, falls erforderlich. Die Dateierweiterung hat Vorrang vor dem Inhalt, aber der Inhalt wird verwendet, wenn die Dateierweiterung 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 fileName und das Gerät data zurück.
Diese Überladung kann nützlich sein, wenn die Datei entfernt ist und wir begonnen haben, einige ihrer Daten herunterzuladen. Sie ermöglicht es, auch für entfernte Dateien einen vollständigen MIME-Typ-Abgleich durchzuführen.
Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn data nicht mit einem bekannten MIME-Typ übereinstimmt, wird der Standard-MIME-Typ (application/octet-stream) zurückgegeben.
Diese Methode prüft sowohl den Dateinamen als auch den Inhalt der Datei, falls erforderlich. Die Dateierweiterung hat Vorrang vor dem Inhalt, aber der Inhalt wird verwendet, wenn die Dateierweiterung 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, wenn keiner gefunden wurde.
QMimeType QMimeDatabase::mimeTypeForUrl(const QUrl &url) const
Gibt einen MIME-Typ für url zurück.
Handelt es sich bei der URL um eine lokale Datei, wird mimeTypeForFile aufgerufen.
Andernfalls erfolgt der Abgleich nur auf der Grundlage des Dateinamens, außer bei Schemata, bei denen Dateinamen keine große Bedeutung haben, wie bei HTTP. Diese Methode gibt immer den Standard-Mimetyp für HTTP-URLs zurück. Verwenden Sie QNetworkAccessManager, um HTTP-URLs richtig zu behandeln.
Es wird immer ein gültiger MIME-Typ zurückgegeben. Wenn url nicht mit bekannten MIME-Typ-Daten übereinstimmt, 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 sie alle zurückgegeben.
Mit dieser Funktion wird nicht versucht, die Datei zu öffnen. Um auch den Inhalt zur Bestimmung des MIME-Typs zu verwenden, verwenden Sie stattdessen mimeTypeForFile() oder mimeTypeForFileNameAndData().
Siehe auch mimeTypeForFile().
QString QMimeDatabase::suffixForFileName(const QString &fileName) const
Gibt das Suffix für die Datei fileName zurück, wie es die MIME-Datenbank kennt.
Dies ermöglicht die Vorauswahl von "tar.bz2" für foo.tar.bz2, aber nur "txt" für my.file.with.dots.txt.
© 2025 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.