QResource Class
QResource クラスは、リソースから直接読み込むためのインターフェースを提供します。詳細...
| ヘッダー: | #include <QResource> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QResource は、入出力およびネットワーク機能の一部です。
注:このクラスのすべての関数は再入可能です。
パブリック型
| enum | Compression { NoCompression, ZlibCompression, ZstdCompression } |
パブリック関数
| QResource(const QString &file = QString(), const QLocale &locale = QLocale()) | |
| ~QResource() | |
| QString | absoluteFilePath() const |
| QResource::Compression | compressionAlgorithm() const |
| const uchar * | data() const |
| QString | fileName() const |
| bool | isValid() const |
| QDateTime | lastModified() const |
| QLocale | locale() const |
| void | setFileName(const QString &file) |
| void | setLocale(const QLocale &locale) |
| qint64 | size() const |
| QByteArray | uncompressedData() const |
| qint64 | uncompressedSize() const |
静的パブリックメンバー
| bool | registerResource(const QString &rccFileName, const QString &mapRoot = QString()) |
| bool | registerResource(const uchar *rccData, const QString &mapRoot = QString()) |
| bool | unregisterResource(const QString &rccFileName, const QString &mapRoot = QString()) |
| bool | unregisterResource(const uchar *rccData, const QString &mapRoot = QString()) |
保護された関数
詳細な説明
QResource は、単一のリソースエンティティに関連する一連のデータ(および場合によっては子要素)を表すオブジェクトです。QResource を使用すると、生の形式のバイトデータに直接アクセスできます。 このように直接アクセスすることで、バッファのコピーや間接参照を行うことなくデータを読み取ることができます。間接参照は、リソースエンティティをファイルのように扱う場合にしばしば有用であり、これは `QFile` を使用して実現できます。QResource の背後にあるデータや子要素は通常、アプリケーションやライブラリにコンパイルされますが、実行時にリソースをロードすることも可能です。 実行時に読み込まれる場合、リソースファイルは1つの大きなデータセットとして読み込まれ、その後、リソースツリーへの参照を介して断片ごとに提供されます。
QResourceは、絶対パスで読み込むことができます。この際、パスは「/ 」文字で始まるファイルシステムパスとして扱われるか、あるいは「: 」文字で始まるリソース表記として扱われます。相対リソースも開くことができ、その場合はQDir::searchPaths()が返すパス一覧から検索されます。
ファイルを表す QResource にはデータが格納されています。このデータは圧縮されている場合があり、その場合は実際のデータにアクセスするためにqUncompress() を使用する必要があります。QFile を通じてアクセスする場合は、これが暗黙的に行われます。ディレクトリを表す QResource には、データはなく、子要素のみが含まれます。
動的リソースの読み込み
リソースは、アプリケーションのバイナリから除外し、実行時に必要になった際に `registerResource()` 関数を使用して読み込むことができます。`registerResource()` に渡されるリソースファイルは、rcc によって作成されたバイナリリソースでなければなりません。バイナリリソースに関する詳細情報は、『Qt リソースシステム』のドキュメントを参照してください。
これは、設定に応じて変化したり、ユーザーが編集して後で再作成したりする可能性のある、大量のアプリケーションアイコンをロードする際にしばしば役立ちます。リソースは、単一のファイル読み取り操作の結果として、あるいはメモリマッピングされたファイルとして、即座にメモリに読み込まれます。
このアプローチでは、読み込まれるファイルが 1 つだけであり、データはsetFileName() で指定されたパスを通じて提供されるため、パフォーマンスが大幅に向上することがあります。
unregisterResource() 関数は、特定のファイルへの参照を解除します。登録解除されたファイルに関連するリソースを現在参照している QResource オブジェクトが存在する場合、それらは引き続き有効ですが、リソースファイル自体はリソースルートから削除されるため、このリソースデータを指す QResource をこれ以上作成することはできなくなります。 そのリソース自体への参照を行っている最後の QResource が破棄されると、リソースはメモリからアンマップされます。
破損とセキュリティ
QResource クラスは、渡されたファイルに対していくつかのチェックを行い、それが現在のバージョンの Qt でサポートされているかどうかを判断します。 これらのテストは、ファイルヘッダが、コンパイルされていない機能(Zstandard 解凍など)を要求していないこと、またはファイルが将来のバージョンの Qt のものではないことを確認するためのものです。これらは、ファイル全体の有効性を確認するものではありません。
出所が信頼できないファイルに対して QResource を使用してはなりません。アプリケーションは、少なくともアプリケーション自体やそのプラグインと同等以上に信頼できる出所を持つリソースファイルのみを読み込もうとするように設計する必要があります。
関連項目: 『Qt リソースシステム』、QFile 、QDir 、およびQFileInfo 。
メンバ型のドキュメント
enum QResource::Compression
この列挙型は、compressionAlgorithm() によって、RCC ツールがペイロードの圧縮に使用したアルゴリズムを示すために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QResource::NoCompression | 0 | コンテンツは圧縮されていません |
QResource::ZlibCompression | 1 | コンテンツはzlibを使用して圧縮されており、qUncompress() 関数を使用して解凍できます。 |
QResource::ZstdCompression | 2 | コンテンツはzstd を使用して圧縮されています。解凍するには、zstd ライブラリのZSTD_decompress 関数を使用してください。 |
compressionAlgorithm()も参照してください 。
メンバ関数のドキュメント
QResource::QResource(const QString &file = QString(), const QLocale &locale = QLocale())
file を指す QResource を生成します。locale は、リソースデータの特定のローカライズ版を読み込むために使用されます。
関連項目: QFileInfo 、QDir::searchPaths()、setFileName()、およびsetLocale()。
[noexcept] QResource::~QResource()
QResource オブジェクトのリソースを解放します。
QString QResource::absoluteFilePath() const
このQResource が表す実際のパスを返します。リソースがQDir::searchPaths()を介して見つかった場合、その旨がパスに明記されます。
fileName()も参照してください 。
[protected] QStringList QResource::children() const
このディレクトリ内のすべてのリソースのリストを返します。リソースがファイルである場合、リストは空になります。
isDir()も参照してください 。
QResource::Compression QResource::compressionAlgorithm() const
このリソースが圧縮されている場合、その圧縮形式を返します。圧縮されていない場合、この関数はQResource::NoCompression を返します。
この関数が `QResource::ZlibCompression` を返した場合、qUncompress() 関数を使用してデータを解凍できます。Qt 5.13 までは、これが唯一の圧縮アルゴリズムでした。
この関数がQResource::ZstdCompression を返した場合、Zstandardライブラリの関数(<zstd.h> ヘッダー)を使用する必要があります。Qtはラッパーを提供していません。
Zstandardのマニュアルを参照してください。
const uchar *QResource::data() const
このリソースが表す読み取り専用データのセグメントへの直接アクセスを返します。リソースが圧縮されている場合、返されるデータも圧縮されています。呼び出し元は、データを解凍するか、uncompressedData() を使用する必要があります。リソースがディレクトリの場合、nullptr が返されます。
uncompressedData()、size()、およびisFile()も参照してください 。
QString QResource::fileName() const
このQResource が表すファイルの、渡されたままのフルパスを返します。
setFileName() およびabsoluteFilePath()も参照してください 。
[protected] bool QResource::isDir() const
リソースがディレクトリであり、その中に `children()` が存在する可能性がある場合は `true ` を返し、ファイルの場合は `false` を返します。
isFile()も参照してください 。
[protected] bool QResource::isFile() const
リソースがファイルであり、データが格納されている場合は `true ` を返し、ディレクトリの場合は `false` を返します。
isDir()も参照してください 。
bool QResource::isValid() const
リソースがリソース階層内に実際に存在する場合、true を返し、そうでない場合はfalseを返します。
QDateTime QResource::lastModified() const
リソースにパッケージ化する前に、ファイルが最後に変更された日時を返します。
QLocale QResource::locale() const
QResource のデータを検索するために使用されたロケールを返します。
setLocale()も参照してください 。
[static] bool QResource::registerResource(const QString &rccFileName, const QString &mapRoot = QString())
指定されたrccFileName を持つリソースを、mapRoot で指定されたリソースツリー内の場所に登録し、ファイルのオープンに成功した場合はtrue を返し、失敗した場合はfalse を返します。
unregisterResource()も参照してください 。
[static] bool QResource::registerResource(const uchar *rccData, const QString &mapRoot = QString())
指定されたrccData を、mapRoot で指定されたリソースツリー内の場所に登録し、ファイルのオープンに成功した場合はtrue を返し、失敗した場合はfalse を返します。
警告: リソースデータを参照する可能性のあるQFile の存続期間中、データは 有効な状態を維持する必要があります。
unregisterResource()も参照してください 。
void QResource::setFileName(const QString &file)
QResource をfile を指すように設定します。file は絶対パスでも相対パスでも指定できます。絶対パスの場合は直接開かれますが、相対パスの場合はQDir::searchPaths() からファイルが検索されます。
fileName() およびabsoluteFilePath()も参照してください 。
void QResource::setLocale(const QLocale &locale)
QResource を設定し、locale 向けのリソースのローカライズ版のみを読み込むようにします。特定のロケールに対応するリソースが見つからない場合は、C ロケールが使用されます。
locale() およびsetFileName()も参照してください 。
qint64 QResource::size() const
リソースの基盤となる保存データのサイズを返します。
リソースが圧縮されている場合、この関数は圧縮データのサイズを返します。非圧縮のサイズについては、uncompressedSize() を参照してください。
data()、uncompressedSize()、およびisFile()も参照してください 。
QByteArray QResource::uncompressedData() const
データが圧縮されて保存されている場合、まず解凍を行ってからリソースデータを返します。リソースがディレクトリである場合、または解凍中にエラーが発生した場合は、QByteArray が null として返されます。
注: データが圧縮されている場合 、この関数は呼び出されるたびに解凍を行います。呼び出し間の結果はキャッシュされません。
関連項目: uncompressedSize()、size()、compressionAlgorithm()、およびisFile()。
qint64 QResource::uncompressedSize() const
このリソース内のデータのサイズを返します。データが圧縮されていない場合、この関数は `size()` と同じ値を返します。圧縮されている場合、この関数は保存されたストリームから元の非圧縮データのサイズを抽出します。
関連項目: size()、uncompressedData()、およびisFile()。
[static] bool QResource::unregisterResource(const QString &rccFileName, const QString &mapRoot = QString())
指定されたrccFileName を持つリソースを、mapRoot で指定されたリソースツリー内の場所から登録解除し、リソースのアンロードに成功し、そのリソースへの参照が存在しない場合はtrue を返し、そうでない場合はfalse を返します。
registerResource()も参照してください 。
[static] bool QResource::unregisterResource(const uchar *rccData, const QString &mapRoot = QString())
指定されたrccData を持つリソースを、mapRoot で指定されたリソースツリー内の位置から登録解除します。リソースのアンロードに成功し、そのリソースへの参照が存在しない場合はtrue を返し、そうでない場合はfalse を返します。
registerResource()も参照してください 。
© 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.