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 }
QMimeType とMIME Type Browserも参照のこと 。
メンバ型ドキュメント
enum QMimeDatabase::MatchMode
この列挙型は、ファイルをMIMEタイプにマッチさせる方法を指定します。
定数 | 値 | 説明 |
---|---|---|
QMimeDatabase::MatchDefault | 0x0 | ファイル名と内容の両方がマッチを探すために使われます。 |
QMimeDatabase::MatchExtension | 0x1 | ファイル名のみがマッチを探すために使われます。 |
QMimeDatabase::MatchContent | 0x2 | ファイルの内容が一致を探すために使用される |
メンバ関数 ドキュメント
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)が返される。
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 とデバイス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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。