QMimeDatabase Class

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

Header: #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

与えられたfileName およびdevice データの 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 "だけを事前に選択することができます。

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。