Spec-Zone.ru › Qt 5.14

Класс QResource

Класс QResource предоставляет интерфейс для прямого чтения из ресурсов. Подробнее...

Заголовок: #include <QResource>
qmake: QT += core
С тех пор: Qt 4.2

Этот класс был представлен в Qt 4.2.

  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются перевходящими.

Типы public

Перечисление Compression { НетСжатия, ZlibСжатие, ZstdСжатие }

Функции public

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

Статические члены public

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 — это объект, представляющий набор данных (и, возможно, дочерние элементы), относящиеся к одному ресурсу. QResource предоставляет прямой доступ к байтам в их исходном формате. Таким образом, прямой доступ позволяет читать данные без копирования буфера или косвенного доступа. Косвенный доступ часто бывает полезен при взаимодействии с ресурсом так, как будто это файл; это можно сделать с помощью QFile. Данные и дочерние элементы QResource обычно компилируются в приложение/библиотеку, но также можно загрузить ресурс во время выполнения. При загрузке во время выполнения файл ресурса загружается как один большой набор данных, а затем выдаётся частями через ссылки в дереве ресурсов.

QResource может быть загружен с абсолютным путем, либо рассматриваться как файловая система, укорененная символом /, или в обозначении ресурса, укорененном символом :. Также можно открыть относительный ресурс, который будет найден в списке путей, возвращаемых QDir::searchPaths().

QResource, представляющий файл, будет иметь данные, его поддерживающие; эти данные могут быть сжаты, в этом случае qUncompress() необходимо использовать для доступа к реальным данным; это происходит неявно, когда к ресурсу обращаются через QFile. QResource, представляющий каталог, будет иметь только дочерние элементы и не будет иметь данных.

Динамическая загрузка ресурсов

Ресурс может быть исключён из двоичного файла приложения и загружен при необходимости во время выполнения с помощью функции registerResource(). Файл ресурса, переданный в registerResource(), должен быть двоичным ресурсом, созданным инструментом rcc. Дополнительную информацию о двоичных ресурсах можно найти в документации по Системе ресурсов Qt.

Это часто бывает полезно при загрузке большого набора значков приложения, которые могут меняться в зависимости от настройки или которые могут быть отредактированы пользователем, а затем повторно созданы. Ресурс немедленно загружается в память, либо в результате единственной операции чтения файла, либо в виде файла с отображением в памяти.

Этот подход может обеспечить существенное повышение производительности, поскольку загрузится только один файл, а части данных будут выдаваться по запрошенному пути в setFileName().

Функция unregisterResource() удаляет ссылку на определённый файл. Если существуют объекты QResource, которые в данный момент ссылаются на ресурсы, связанные с незарегистрированным файлом, они останутся действительными, но сам файл ресурса будет удалён из корней ресурсов, и, таким образом, больше нельзя создать QResource, указывающий на эти данные ресурса. Ресурс будет размапирован из памяти, когда последний QResource, который указывает на него, будет уничтожен.

См. также Систему ресурсов Qt, QFile, QDir и QFileInfo.

Документация по типу членов

Перечисление QResource::Compression

Это перечисление используется функцией compressionAlgorithm() для указания алгоритма, используемого инструментом RCC для сжатия полезной нагрузки.

Константа Значение Описание
QResource::NoCompression 0 Содержимое не сжато
QResource::ZlibCompression 1 Содержимое сжато с помощью zlib и может быть распаковано с помощью функции qUncompress().
QResource::ZstdCompression 2 Содержимое сжато с помощью zstd. Для распаковки используйте функцию ZSTD_decompress из библиотеки zstd.

Это перечисление было представлено или изменено в Qt 5.13.

См. также compressionAlgorithm().

Документация по функциям-членам

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

Создает QResource, указывающий на file. locale используется для загрузки конкретной локализации данных ресурса.

См. также QFileInfo, QDir::searchPaths(), setFileName() и setLocale().

QResource::~QResource()

Освобождает ресурсы объекта QResource.

QString QResource::absoluteFilePath() const

Возвращает реальный путь, который представляет этот QResource; если ресурс был найден с помощью QDir::searchPaths(), он будет указан в пути.

См. также fileName().

QStringList QResource::children() const

Возвращает список всех ресурсов в этом каталоге; если ресурс представляет файл, список будет пустым.

См. также isDir().

QResource::Compression QResource::compressionAlgorithm() const

Возвращает тип сжатия, с которым сжат этот ресурс, если он сжат. Если он не сжат, эта функция возвращает QResource::НетСжатия.

Если эта функция возвращает QResource::ZlibCompression, вы можете распаковать данные с помощью функции qUncompress(). До Qt 5.13 это был единственный возможный алгоритм сжатия.

Если эта функция возвращает QResource::ZstdCompression, вам необходимо использовать функции библиотеки Zstandard (<zstd.h> header). Qt does not provide a wrapper. See \l{http://facebook.github.io/zstd/zstd_manual.html}{Zstandard manual}. \sa data(), isFile()

Эта функция была добавлена в Qt 5.13.

const uchar *QResource::data() const

Возвращает прямой доступ к неизменяемому сегменту данных, который представляет этот ресурс. Если ресурс сжат, возвращаемые данные сжаты, и для доступа к данным необходимо использовать соответствующие функции библиотек. Если ресурс является каталогом nullptr возвращается.

См. также size(), compressionAlgorithm() и isFile().

QString QResource::fileName() const

Возвращает полный путь к файлу, который представляет этот QResource, как он был передан.

См. также setFileName() и absoluteFilePath().

[protected] bool QResource::isDir() const

Возвращает true, если ресурс представляет каталог и, следовательно, может содержать children(), false, если он представляет файл.

См. также isFile().

[protected] bool QResource::isFile() const

Возвращает true, если ресурс представляет файл и, следовательно, содержит данные, false, если он представляет каталог.

См. также isDir().

bool QResource::isValid() const

Возвращает true, если ресурс действительно существует в иерархии ресурсов, в противном случае — false.

QDateTime QResource::lastModified() const

Возвращает дату и время последнего изменения файла перед упаковкой в ресурс.

Эта функция была добавлена в Qt 5.8.

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, который может ссылаться на данные ресурса.

Эта функция была добавлена в Qt 4.3.

См. также 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

Возвращает размер данных, поддерживающих ресурс.

См. также data() и 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.

Эта функция была добавлена в Qt 4.3.

См. также registerResource().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qresource.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API