Spec-Zone.ru › Qt 5.9

Класс QMimeDatabase

Класс QMimeDatabase поддерживает базу данных типов MIME. Подробнее...

Заголовок: #include <QMimeDatabase>
qmake: QT += core
С момента: Qt 5.0
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются безопасными для потоков.

Типы публичного доступа

перечисление MatchMode { MatchDefault, MatchExtension, MatchContent }

Функции публичного доступа

QMimeDatabase()
~QMimeDatabase()
QList<QMimeType> allMimeTypes() const
QMimeType mimeTypeForData(const QByteArray &data) const
QMimeType mimeTypeForData(QIODevice *device) const
QMimeType mimeTypeForFile(const QFileInfo &fileInfo, MatchMode mode = MatchDefault) const
QMimeType mimeTypeForFile(const QString &fileName, 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

Подробное описание

Класс QMimeDatabase поддерживает базу данных типов MIME.

База данных типов MIME предоставляется проектом freedesktop.org shared-mime-info. Если база данных типов MIME не может быть найдена в системе, как это происходит на большинстве систем Windows, macOS и iOS, Qt будет использовать свою собственную копию.

Приложения, которые хотят определить пользовательские типы MIME, должны установить XML-файл в места, где ищутся определения типов MIME. Эти места можно запросить с помощью

QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/packages"),
                          QStandardPaths::LocateDirectory);

В типичной системе Unix это будет /usr/share/mime/packages/, но также можно расширить список каталогов, задав переменную окружения XDG_DATA_DIRS. Например, добавление /opt/myapp/share к XDG_DATA_DIRS приведет к тому, что будет производиться поиск определений MIME в /opt/myapp/share/mime/packages/.

Вот пример 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>

Для получения более подробной информации о синтаксисе XML-определений MIME, включая определение «магии» для обнаружения типов MIME на основе данных, ознакомьтесь со спецификацией Shared Mime Info по адресу http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html

В системах Unix для повышения производительности используется двоичный кэш. Этот кэш генерируется командой «update-mime-database путь», где путь будет /opt/myapp/share/mime в приведенном выше примере. Убедитесь, что вы выполнили эту команду при установке файла определения типа 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
}

См. также QMimeType и Пример обозревателя типов MIME.

Документация по типу членов

перечисление QMimeDatabase::MatchMode

Это перечисление задает способ сопоставления файла с типом MIME.

Константа Значение Описание
QMimeDatabase::MatchDefault 0x0 Для поиска соответствия используются и имя файла, и содержимое файла
QMimeDatabase::MatchExtension 0x1 Для поиска соответствия используется только имя файла
QMimeDatabase::MatchContent 0x2 Для поиска соответствия используется содержимое файла

Документация по функциям-членам

QMimeDatabase::QMimeDatabase()

Создаёт объект QMimeDatabase.

Создание экземпляра QMimeDatabase каждый раз при необходимости для выполнения поиска вполне допустимо. Парсинг типов mime выполняется по мере необходимости (при установке shared-mime-info) или при создании первого экземпляра (при парсинге XML-файлов напрямую).

QMimeDatabase::~QMimeDatabase()

Удаляет объект QMimeDatabase.

QList<QMimeType> QMimeDatabase::allMimeTypes() const

Возвращает список всех доступных типов MIME.

Это может быть полезно для отображения всех типов MIME пользователю, например, в редакторе типов MIME. Однако не следует использовать, если это не абсолютно необходимо в других случаях; для повышения производительности предпочтительнее использовать методы mimeTypeForXxx().

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

Возвращает тип MIME для data.

Возвращается всегда действительный тип MIME. Если data не соответствует никакому известному типу MIME, возвращается тип по умолчанию (application/octet-stream).

QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const

Возвращает тип MIME для данных в device.

Возвращается всегда действительный тип MIME. Если данные в device не соответствуют никакому известному типу MIME, возвращается тип по умолчанию (application/octet-stream).

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

Возвращает тип MIME для fileInfo.

Возвращается всегда действительный тип MIME.

Алгоритм сопоставления по умолчанию рассматривает как имя файла, так и содержимое файла, если необходимо. Расширение файла имеет приоритет над содержимым, но содержимое будет использоваться, если расширение файла неизвестно или соответствует нескольким типам MIME. Если fileInfo является символьным ссылкой в Unix, вместо неё будет использован файл, на который она указывает. Если файл не соответствует никакому известному шаблону или данным, возвращается тип MIME по умолчанию (application/octet-stream).

Когда mode задан как MatchExtension, используется только имя файла, а не содержимое файла. Файл даже не обязательно должен существовать. Если имя файла не соответствует ни одному известному шаблону, возвращается тип MIME по умолчанию (application/octet-stream). Если нескольким типам MIME соответствует этот файл, возвращается первый из них (в алфавитном порядке).

Когда mode задан как MatchContent, и файл доступен для чтения, для определения типа MIME используется только содержимое файла. Это эквивалентно вызову mimeTypeForData с QFile в качестве входного устройства.

fileInfo может ссылаться на абсолютный или относительный путь.

См. также QMimeType::isDefault() и mimeTypeForData().

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

Возвращает тип MIME для файла с именем fileName, используя mode.

Это перегруженная функция.

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

Возвращает тип MIME для заданного fileName и данных device.

Эта перегрузка может быть полезна, когда файл удалённый, и мы начали загружать часть его данных в устройстве. Это позволяет выполнять полное сопоставление типов MIME для удалённых файлов тоже.

Если устройство не открыто, оно будет открыто этой функцией и закрыто после завершения определения типа MIME.

Всегда возвращается допустимый тип MIME. Если данные device не соответствуют никакому известному типу MIME, возвращается тип MIME по умолчанию (application/octet-stream).

Этот метод анализирует как имя файла, так и содержимое файла, если необходимо. Расширение файла имеет приоритет над содержимым, но содержимое будет использовано, если расширение файла неизвестно или соответствует нескольким типам MIME.

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

Возвращает тип MIME для заданного fileName и данных устройства data.

Этот перегруз может быть полезен, когда файл удаленный, и мы начали загружать некоторые его данные. Это позволяет выполнять полное соответствие типа MIME для удаленных файлов.

Всегда возвращается допустимый тип MIME. Если data не соответствует никакому известному типу MIME, возвращается тип MIME по умолчанию (application/octet-stream).

Этот метод анализирует как имя файла, так и содержимое файла, если необходимо. Расширение файла имеет приоритет над содержимым, но содержимое будет использовано, если расширение файла неизвестно или соответствует нескольким типам MIME.

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

Возвращает тип MIME для nameOrAlias или недопустимый, если не найден.

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

Возвращает тип MIME для url.

Если URL указывает на локальный файл, вызывается mimeTypeForFile.

В противном случае соответствие выполняется только по имени файла, за исключением схем, где имена файлов не имеют большого значения, например, HTTP. Этот метод всегда возвращает тип MIME по умолчанию для URL-адресов HTTP, используйте QNetworkAccessManager для правильной обработки URL-адресов HTTP.

Всегда возвращается допустимый тип MIME. Если url не соответствует никаким известным данным типа MIME, возвращается тип MIME по умолчанию (application/octet-stream).

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

Возвращает типы MIME для имени файла fileName.

Если имя файла не соответствует никакому известному шаблону, возвращается пустой список. Если нескольким типам MIME соответствует этот файл, они все возвращаются.

Эта функция не пытается открыть файл. Чтобы также использовать содержимое при определении типа MIME, используйте mimeTypeForFile() или mimeTypeForFileNameAndData() вместо этого.

См. также mimeTypeForFile().

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

Возвращает расширение файла fileName, известное базе данных MIME.

Это позволяет предварительно выбрать «tar.bz2» для foo.tar.bz2, но по-прежнему только «txt» для my.file.with.dots.txt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qmimedatabase.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API