QResource Class

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

Header: #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

この enum は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()も参照してください

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。