QResource Class
QResourceクラスは、リソースから直接読み込むためのインターフェースを提供します。詳細...
Header: | #include <QResource> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバ一覧
- QResourceは、Input/OutputおよびNetworkingに属しています。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
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は、1つのリソースエンティティに関連する一連のデータ(および子オブジェクト)を表すオブジェクトです。QResourceは、生の形式のバイトに直接アクセスできます。このように直接アクセスすることで、バッファのコピーやインダイレクトなしにデータを読み取ることができます。リソース実体をあたかもファイルであるかのように扱うには、QFile 。QResourceの背後にあるデータと子は、通常、アプリケーション/ライブラリにコンパイルされますが、実行時にリソースをロードすることも可能です。実行時にロードされる場合、リソースファイルは1つの大きなデータセットとしてロードされ、その後、リソースツリーへの参照を通じて、断片的に提供されます。
QResourceは絶対パスでロードすることができ、/
文字でルートされたファイルシステムとして扱われるか、:
文字でルートされたリソース表記で扱われます。また、QDir::searchPaths() によって返されるパスのリストにある相対リソースを開くこともできます。
ファイルを表すQResourceは、その後ろにデータを持ちます。このデータは圧縮されている可能性があり、その場合、qUncompress()を使用して実際のデータにアクセスする必要があります。QFile 。ディレクトリを表すQResourceは、子要素のみを持ち、データを持ちません。
動的なリソースのロード
registerResource ()関数を使用することで、リソースをアプリケーションのバイナリから除外し、実行時に必要なときにロードすることができます。registerResource ()に渡されるリソース・ファイルは、rccによって作成されたバイナリ・リソースでなければなりません。バイナリリソースの詳細については、Qt Resource Systemのドキュメントを参照してください。
これは、設定によって変更される可能性のある、またはユーザーによって編集され、後で再作成される可能性のある、大規模なアプリケーションアイコンのセットをロードするときに、しばしば役立ちます。リソースは、単一のファイル読み込み操作の結果として、またはメモリマップファイルとして、直ちにメモリにロードされます。
この方法は、単一のファイルのみがロードされ、setFileName() で要求されたパスを介してデータの断片が提供されるため、パフォーマンスが大幅に向上します。
unregisterResource ()関数は、特定のファイルへの参照を削除します。現在、未登録のファイルに関連するリソースを参照しているQResourceオブジェクトがある場合、それらは引き続き有効ですが、リソースファイル自体はリソースルートから削除されるため、このリソースデータを指すQResourceをそれ以上作成することはできません。リソース自体は、それを指す最後のQResourceが破棄されると、メモリからアンマップされます。
破損とセキュリティ
QResourceクラスは、渡されたファイルが現在のバージョンのQtでサポートされているかどうかを判断するために、いくつかのチェックを行います。これらのテストは、ファイルヘッダがコンパイルされていない機能(Zstandardの解凍など)を要求していないか、ファイルが将来のバージョンのQtではないことを確認するためのものです。ファイル全体の妥当性を確認するものではありません。
QResource は、出所が信頼できないファイルには使用しないでください。アプリケーションは、少なくともアプリケーション自身やそのプラグインと同じくらい信頼できる出所を持つリソースファイルのみを読み込むように設計する必要があります。
The Qt Resource System,QFile,QDir,QFileInfoも参照してください 。
メンバ型のドキュメント
enum QResource::Compression
この enum は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())
mapRoot で指定されたリソースツリーの場所に、指定されたrccFileName でリソースを登録し、ファイルが正常にオープンされた場合はtrue
を返し、そうでない場合はfalse
を返します。
unregisterResource()も参照 。
[static]
bool QResource::registerResource(const uchar *rccData, const QString &mapRoot = QString())
mapRoot で指定されたリソースツリーの場所に、指定されたrccData でリソースを登録し、 ファイルが正常にオープンされた場合はtrue
を返し、そうでない場合はfalse
を返す。
そうでない場合は を返します: このデータは、リソース・データを参照するQFile が存在する限り、有効であり続けなければならない。
unregisterResource()も参照 。
void QResource::setFileName(const QString &file)
file を指すようにQResource を設定する。file は絶対パスで、その場合は直接オープンされる。 相対パスであれば、ファイルはQDir::searchPaths() で検索される。
fileName() およびabsoluteFilePath()も参照 。
void QResource::setLocale(const QLocale &locale)
locale に対して、リソースのローカライズのみを読み込むようにQResource を設定する。指定したロケールのリソースが見つからない場合は、C ロケールを使用します。
locale() およびsetFileName()も参照 。
qint64 QResource::size() const
リソースに格納されているデータのサイズを返します。
リソースが圧縮されている場合、この関数は圧縮データのサイズを返します。圧縮前のサイズについてはuncompressedSize() を参照。
data()、uncompressedSize()、isFile()も参照 。
QByteArray QResource::uncompressedData() const
リソース・データを返します。データが圧縮されて保存されている場合は、まずそれを展開します。リソースがディレクトリの場合、または展開中にエラーが発生した場合は、 nullQByteArray を返します。
注意: データが圧縮されていた場合、この関数は呼び出されるたびに解凍されます。結果は、コール間でキャッシュされません。
uncompressedSize()、size()、compressionAlgorithm()、isFile()も参照 。
qint64 QResource::uncompressedSize() const
このリソース内のデータのサイズを返します。データが圧縮されていない場合、この関数はsize() と同じものを返す。圧縮されていた場合、この関数は、格納されているストリームから元の非圧縮データのサイズを抽出します。
size()、uncompressedData()、isFile()も参照 。
[static]
bool QResource::unregisterResource(const QString &rccFileName, const QString &mapRoot = QString())
mapRoot で指定されたリソースツリー内の位置で、指定されたrccFileName のリソースの登録を解除します。リソースのアンロードに成功し、リソースへの参照が存在しない場合はtrue
を返し、そうでない場合はfalse
を返します。
registerResource()も参照 。
[static]
bool QResource::unregisterResource(const uchar *rccData, const QString &mapRoot = QString())
mapRoot で指定されたリソースツリー内の位置で、指定されたrccData のリソースの登録を解除し、リソースのアンロードに成功し、リソースへの参照が存在しない場合はtrue
を返し、そうでない場合はfalse
を返す。
registerResource()も参照してください 。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。