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 ファイルをインストールする必要があります。これらの場所は、次のようにして照会できます。
using namespace Qt::StringLiterals;
// ...
QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "mime/packages"_L1,
QStandardPaths::LocateDirectory);一般的なUnixシステムでは、これは /usr/share/mime/packages/ になりますが、環境変数 `XDG_DATA_DIRS` を設定することで、ディレクトリの一覧を拡張することも可能です。例えば、XDG_DATA_DIRS に `/opt/myapp/share` を追加すると、`/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>データに基づいて MIME タイプを検出するための「マジック」の定義を含め、XML MIME 定義の構文に関する詳細については、http://standards の「Shared Mime Info」仕様書を参照してください。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
}QMimeType およびMIME Type Browserも参照してください 。
メンバタイプのドキュメント
enum QMimeDatabase::MatchMode
この列挙型は、ファイルとMIMEタイプとの照合がどのように行われるかを指定します。
| 定数 | 値 | 説明 |
|---|---|---|
QMimeDatabase::MatchDefault | 0x0 | ファイル名とコンテンツの両方を使用して一致を検索します。 |
QMimeDatabase::MatchExtension | 0x1 | ファイル名のみを使用して一致を検索します |
QMimeDatabase::MatchContent | 0x2 | ファイルの内容を使用して一致を検索します |
メンバー関数のドキュメント
QMimeDatabase::QMimeDatabase()
QMimeDatabase オブジェクトを生成します。
検索を実行する必要があるたびに QMimeDatabase のインスタンスを作成しても全く問題ありません。MIME タイプの解析は、必要に応じて(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) が返されます。
mode がMatchExtension に設定されている場合、ファイルの内容ではなくファイル名のみが使用されます。ファイルが存在していなくても構いません。ファイル名が既知のパターンに一致しない場合、デフォルトのMIMEタイプ(application/octet-stream)が返されます。 このファイルに一致するMIMEタイプが複数ある場合は、アルファベット順で最初のものが返されます。
mode がMatchContent に設定されており、ファイルが読み取り可能な場合、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 およびdevicedata に対するMIMEタイプを返します。
このオーバーロードは、ファイルがリモートにあり、そのデータの一部をダウンロードし始めた場合に役立ちます。これにより、リモートファイルに対しても完全なMIMEタイプの一致確認を行うことが可能になります。
常に有効な MIME タイプが返されます。data が既知の MIME タイプデータと一致しない場合、デフォルトの MIME タイプ (application/octet-stream) が返されます。
このメソッドは、必要に応じてファイル名とファイル内容の両方を確認します。ファイル拡張子は内容よりも優先されますが、ファイル拡張子が不明の場合、または複数のMIMEタイプと一致する場合は、ファイルの内容が使用されます。
QMimeType QMimeDatabase::mimeTypeForName(const QString &nameOrAlias) const
nameOrAlias の MIME タイプを返します。見つからない場合は無効な 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」のみが選択されます。
© 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.