QMimeDatabase Class

QMimeDatabaseクラスはMIMEタイプのデータベースを管理します。詳細...

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

注意:このクラスの関数はすべてスレッドセーフです。

パブリック型

enum MatchMode { MatchDefault, MatchExtension, MatchContent }

パブリック関数

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

詳しい説明

MIME タイプデータベースは freedesktop.org shared-mime-info プロジェクトによって提供されています。ほとんどの Windows、macOS、iOS システムでそうであるように、MIME タイプデータベースがシステム上で見つからない場合、Qt はその独自のコピーを使用します。

カスタム MIME タイプを定義したいアプリケーションは、MIME 定義を検索する場所に XML ファイルをインストールする必要があります。これらの場所は

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

典型的なUnixシステムでは、これは/usr/share/mime/packages/になりますが、環境変数XDG_DATA_DIRS を設定することで、ディレクトリのリストを拡張することも可能です。例えば、/opt/myapp/shareをXDG_DATA_DIRS に追加すると、/opt/myapp/share/mime/packages/がMIME定義のために検索されます。

以下は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>

XMLのMIME定義の構文の詳細については、データに基づいてMIMEタイプを検出するための「マジック」の定義も含めて、Shared MIME Info仕様(http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html)をお読みください。

Unixシステムでは、より高いパフォーマンスのためにバイナリ・キャッシュが使われる。このキャッシュは "update-mime-database path "コマンドで生成されます。上記の例では、pathは/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
}

QMimeTypeMIME Type Browserも参照のこと

メンバータイプのドキュメント

enum QMimeDatabase::MatchMode

この列挙型は、ファイルと MIME タイプのマッチングをどのように行うかを指定する。

定数説明
QMimeDatabase::MatchDefault0x0ファイル名と内容の両方がマッチを探すために使われます。
QMimeDatabase::MatchExtension0x1ファイル名のみがマッチを探すために使われます。
QMimeDatabase::MatchContent0x2ファイルの内容が一致を探すために使用される

メンバー関数ドキュメント

QMimeDatabase::QMimeDatabase()

QMimeDatabase オブジェクトを構築する。

検索を実行する必要があるたびに QMimeDatabase のインスタンスを作成してもまったく問題ありません。mimetypes の解析は必要に応じて(shared-mime-info がインストールされている場合)、または最初のインスタンスが構築されるときに(XML ファイルを直接解析する場合)行われます。

[noexcept] QMimeDatabase::~QMimeDatabase()

QMimeDatabase オブジェクトを破棄する。

QList<QMimeType> QMimeDatabase::allMimeTypes() const

利用可能なすべての MIME タイプのリストを返します。

これは、たとえば MIME タイプエディタなどで、すべての MIME タイプを表示するのに便利です。パフォーマンス上の理由からmimeTypeForXxx() メソッドを使用することを推奨します。

QMimeType QMimeDatabase::mimeTypeForData(QIODevice *device) const

device のデータの MIME タイプを返す。

常に有効な MIME タイプが返されます。device のデータが既知のどのMIMEタイプデータとも一致しない場合、デフォルトのMIMEタイプ(application/octet-stream)が返される。

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

data の MIME タイプを返す。

常に有効な MIME タイプが返されます。data 、既知のMIMEタイプデータにマッチしない場合は、デフォルトのMIMEタイプ(application/octet-stream)が返される。

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

fileInfo の MIME タイプを返す。

常に有効なMIMEタイプが返される。

デフォルトのマッチングアルゴリズムは、必要に応じてファイル名とファイルの内容の両方を調べます。ファイル拡張子は内容よりも優先されるが、ファイル拡張子が不明な場合や複数の MIME タイプにマッチする場合は内容が使用される。fileInfo がUnixのシンボリックリンクの場合、それが参照するファイルが代わりに使われる。ファイルが既知のパターンやデータにマッチしない場合、デフォルトのMIMEタイプ(application/octet-stream)が返される。

modeMatchExtension に設定すると、ファイル名だけが使われ、ファイルの内容は使われない。ファイルが存在する必要もない。ファイル名が既知のパターンにマッチしない場合、デフォルトのMIMEタイプ(application/octet-stream)が返される。複数のMIMEタイプがこのファイルにマッチする場合、最初のもの(アルファベット順)が返される。

modeMatchContent に設定され、ファイルが読み取り可能な場合、MIMEタイプを決定するためにファイルの内容のみが使用される。これは、QFile を入力デバイスとしてmimeTypeForData を呼び出すのと同じである。

fileInfo は、絶対パスまたは相対パスを指す。

QMimeType::isDefault() およびmimeTypeForData()も参照のこと

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

mode を使って、fileName という名前のファイルの MIME タイプを返す。

これはオーバーロードされた関数である。

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

与えられたfileNamedevice データのMIMEタイプを返す。

このオーバーロードは、ファイルがリモートにあり、そのデータの一部をデバイスにダウンロードし始めた場合に有用である。これにより、リモート・ファイルに対しても完全なMIMEタイプのマッチングを行うことができる。

デバイスがオープンされていない場合、この関数によってオープンされ、MIMEタイプの検出が完了した後にクローズされます。

常に有効なMIMEタイプが返される。device データが既知のどの MIME タイプ・データとも一致しない場合、デフォルトの MIME タイプ(application/octet-stream)が返される。

このメソッドは、必要に応じてファイル名とファイルの内容の両方を調べます。ファイル拡張子は内容よりも優先されますが、ファイル拡張子が不明な場合や複数の MIME タイプにマッチする場合は内容が使用されます。

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

与えられたfileName とデバイスdata のMIMEタイプを返す。

このオーバーロードは、ファイルがリモートにあって、そのデータの一部をダウンロードし始めたときに役立つ。これにより、リモート・ファイルに対しても完全なMIMEタイプのマッチングを行うことができる。

常に有効なMIMEタイプが返される。data 、既知のMIMEタイプデータにマッチしない場合は、デフォルトのMIMEタイプ(application/octet-stream)が返される。

このメソッドは、必要に応じてファイル名とファイルの内容の両方を調べます。ファイル拡張子は内容よりも優先されますが、ファイル拡張子が不明な場合や複数の MIME タイプにマッチする場合は内容が使用されます。

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

nameOrAlias の MIME タイプを返すか、見つからない場合は無効なタイプを返す。

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

url のMIMEタイプを返す。

URLがローカルファイルの場合、これはmimeTypeForFile を呼び出す。

それ以外の場合は、ファイル名のみに基づいてマッチングが行われます。ただし、HTTPのようにファイル名があまり意味をなさないスキームは除きます。このメソッドは常にHTTP URLのデフォルトのMIMEタイプを返します。HTTP URLを適切に扱うにはQNetworkAccessManager

常に有効なMIMEタイプが返されます。url 、既知のMIMEタイプデータにマッチしない場合は、デフォルトのMIMEタイプ(application/octet-stream)が返されます。

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

ファイル名fileName に対応する MIME タイプを返します。

ファイル名が既知のパターンにマッチしない場合は、空のリストが返されます。複数の MIME タイプがこのファイルにマッチする場合は、それらすべてが返されます。

この関数はファイルを開こうとはしない。MIME タイプを決定する際に内容も使用するには、代わりにmimeTypeForFile() またはmimeTypeForFileNameAndData() を使用する。

mimeTypeForFile()も参照

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

MIME データベースが知っているファイルfileName の接尾辞を返します。

これにより、foo.tar.bz2に対しては "tar.bz2 "を、my.file.with.dots.txtに対しては "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.