QResource Class

QResourceクラスは、リソースから直接読み込むためのインターフェースを提供します。詳細...

ヘッダー #include <QResource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注意:このクラスの関数はすべてリエントラントです。

パブリック型

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())

プロテクト関数

QStringList children() const
bool isDir() const
bool isFile() const

詳細説明

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

この列挙型はcompressionAlgorithm() で使用され、RCC ツールがペイロードの圧縮にどのアルゴリズムを使用したかを示す。

定数説明
QResource::NoCompression0内容は圧縮されていない
QResource::ZlibCompression1コンテンツはzlibで圧縮されており、qUncompress() 関数で解凍できる。
QResource::ZstdCompression2コンテンツはzstdで圧縮されています。解凍するには、zstd ライブラリのZSTD_decompress 関数を使用します。

compressionAlgorithm()も参照

メンバ関数ドキュメント

QResource::QResource(const QString &file = QString(), const QLocale &locale = QLocale())

file を指す QResource を構築します。locale は、リソース・データの特定のローカライズをロードするために使用されます。

QFileInfoQDir::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のマニュアルを参照してください。

data() およびisFile()も参照してください

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()も参照

© 2025 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.