En esta página

QMimeDatabase Class

La clase QMimeDatabase mantiene una base de datos de tipos MIME. Más...

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

Nota: Todas las funciones de esta clase son thread-safe.

Tipos Públicos

enum MatchMode { MatchDefault, MatchExtension, MatchContent }

Funciones Públicas

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

Descripción detallada

La base de datos de tipos MIME es proporcionada por el proyecto shared-mime-info de freedesktop.org. Si la base de datos de tipos MIME no se puede encontrar en el sistema, como es el caso en la mayoría de los sistemas Windows, macOS e iOS, Qt utilizará su propia copia de la misma.

Las aplicaciones que quieran definir tipos MIME personalizados necesitan instalar un archivo XML en las ubicaciones buscadas para las definiciones MIME. Estas ubicaciones pueden consultarse con

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

En un sistema Unix típico, será /usr/share/mime/packages/, pero también es posible ampliar la lista de directorios configurando la variable de entorno XDG_DATA_DIRS. Por ejemplo, si se añade /opt/myapp/share a XDG_DATA_DIRS, se buscarán las definiciones MIME en /opt/myapp/share/mime/packages/.

He aquí un ejemplo 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>

Para más detalles sobre la sintaxis de las definiciones MIME XML, incluida la definición de "magia" para detectar también tipos MIME basados en datos, lea la especificación Shared Mime Info en http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html.

En los sistemas Unix, se utiliza una caché binaria para aumentar el rendimiento. Esta caché se genera mediante el comando "update-mime-database path", donde path sería /opt/myapp/share/mime en el ejemplo anterior. Asegúrate de ejecutar este comando cuando instales el archivo de definición de tipos 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
}

Véase también QMimeType y Navegador de tipos MIME.

Documentación de tipos miembros

enum QMimeDatabase::MatchMode

Este enum especifica cómo se realiza la correspondencia de un archivo con un tipo MIME.

ConstanteValorDescripción
QMimeDatabase::MatchDefault0x0Tanto el nombre como el contenido del archivo se utilizan para buscar una coincidencia
QMimeDatabase::MatchExtension0x1Sólo se utiliza el nombre del archivo para buscar una coincidencia
QMimeDatabase::MatchContent0x2Para buscar una coincidencia se utiliza el contenido del archivo

Documentación de las funciones

QMimeDatabase::QMimeDatabase()

Construye un objeto QMimeDatabase.

Es perfectamente correcto crear una instancia de QMimeDatabase cada vez que necesites realizar una búsqueda. El análisis de mimetypes se realiza bajo demanda (cuando se instala shared-mime-info) o cuando se construye la primera instancia (cuando se analizan archivos XML directamente).

[noexcept] QMimeDatabase::~QMimeDatabase()

Destruye el objeto QMimeDatabase.

QList<QMimeType> QMimeDatabase::allMimeTypes() const

Devuelve la lista de todos los tipos MIME disponibles.

Esto puede ser útil para mostrar todos los tipos MIME al usuario, por ejemplo en un editor de tipos MIME. Sin embargo, no lo utilice a menos que sea realmente necesario en otros casos, prefiera utilizar los métodos mimeTypeForXxx() por razones de rendimiento.

QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const

Devuelve un tipo MIME para los datos en device.

Siempre se devuelve un tipo MIME válido. Si los datos de device no coinciden con ningún tipo MIME conocido, se devuelve el tipo MIME predeterminado (application/octet-stream).

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

Devuelve un tipo MIME para data.

Siempre se devuelve un tipo MIME válido. Si data no coincide con ningún dato de tipo MIME conocido, se devuelve el tipo MIME por defecto (application/octet-stream).

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

Devuelve un tipo MIME para fileInfo.

Siempre se devuelve un tipo MIME válido.

El algoritmo de coincidencia predeterminado examina tanto el nombre como el contenido del archivo, si es necesario. La extensión del archivo tiene prioridad sobre el contenido, pero se utilizará el contenido si se desconoce la extensión del archivo o si coincide con varios tipos MIME. Si fileInfo es un enlace simbólico Unix, se utilizará el archivo al que hace referencia. Si el archivo no coincide con ningún patrón o dato conocido, se devolverá el tipo MIME por defecto (application/octet-stream).

Cuando mode se establece en MatchExtension, sólo se utiliza el nombre del archivo, no su contenido. Ni siquiera es necesario que el archivo exista. Si el nombre del archivo no coincide con ningún patrón conocido, se devuelve el tipo MIME predeterminado (application/octet-stream). Si varios tipos MIME coinciden con este archivo, se devuelve el primero (alfabéticamente).

Cuando mode se establece en MatchContent, y el archivo es legible, sólo se utiliza el contenido del archivo para determinar el tipo MIME. Esto equivale a llamar a mimeTypeForData con un QFile como dispositivo de entrada.

fileInfo puede referirse a una ruta absoluta o relativa.

Véase también QMimeType::isDefault() y mimeTypeForData().

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

Devuelve un tipo MIME para el archivo llamado fileName utilizando mode.

Se trata de una función sobrecargada.

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

Devuelve un tipo MIME para los datos dados fileName y device.

Esta sobrecarga puede ser útil cuando el archivo es remoto, y empezamos a descargar algunos de sus datos en un dispositivo. Esto permite hacer una correspondencia completa de tipos MIME para archivos remotos también.

Si el dispositivo no está abierto, será abierto por esta función, y cerrado después de que se complete la detección del tipo MIME.

Siempre se devuelve un tipo MIME válido. Si los datos de device no coinciden con ningún tipo MIME conocido, se devuelve el tipo MIME por defecto (application/octet-stream).

Este método examina tanto el nombre como el contenido del archivo, si es necesario. La extensión del archivo tiene prioridad sobre el contenido, pero se utilizará el contenido si la extensión del archivo es desconocida o coincide con varios tipos MIME.

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

Devuelve un tipo MIME para el fileName y el dispositivo dados data.

Esta sobrecarga puede ser útil cuando el fichero es remoto, y empezamos a descargar algunos de sus datos. Esto permite hacer una correspondencia completa de tipos MIME para archivos remotos también.

Siempre se devuelve un tipo MIME válido. Si data no coincide con ningún dato de tipo MIME conocido, se devuelve el tipo MIME por defecto (application/octet-stream).

Este método examina tanto el nombre como el contenido del archivo, si es necesario. La extensión del archivo tiene prioridad sobre el contenido, pero se utilizará el contenido si la extensión del archivo es desconocida o coincide con varios tipos MIME.

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

Devuelve un tipo MIME para nameOrAlias o uno no válido si no se encuentra ninguno.

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

Devuelve un tipo MIME para url.

Si la URL es un archivo local, se llama a mimeTypeForFile.

De lo contrario, la correspondencia se realiza basándose únicamente en el nombre del archivo, excepto para esquemas en los que los nombres de archivo no significan mucho, como HTTP. Este método siempre devuelve el tipo MIME por defecto para URLs HTTP, utilice QNetworkAccessManager para manejar URLs HTTP correctamente.

Siempre se devuelve un tipo MIME válido. Si url no coincide con ningún dato de tipo MIME conocido, se devuelve el tipo MIME por defecto (application/octet-stream).

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

Devuelve los tipos MIME para el nombre de archivo fileName.

Si el nombre del archivo no coincide con ningún patrón conocido, se devuelve una lista vacía. Si varios tipos MIME coinciden con este archivo, se devuelven todos.

Esta función no intenta abrir el archivo. Para utilizar también el contenido al determinar el tipo MIME, utilice en su lugar mimeTypeForFile() o mimeTypeForFileNameAndData().

Véase también mimeTypeForFile().

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

Devuelve el sufijo del archivo fileName, tal como lo conoce la base de datos MIME.

Esto permite preseleccionar "tar.bz2" para foo.tar.bz2, pero aún sólo "txt" para mi.archivo.con.puntos.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.