Spec-Zone.ru › Qt 6.1

Класс QResource

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

Заголовок: #include <QResource>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются реентерабельными.

Типы публичного доступа

перечисление Сжатие { БезСжатия, СжатиеZlib, СжатиеZstd }

Функции публичного доступа

QResource(const QString &file = QString(), const QLocale &locale = QLocale())
~QResource()
QString полныйПутьФайла() const
QResource::Сжатие алгоритмСжатия() const
const uchar * данные() const
QString имяФайла() const
bool действителен() const
QDateTime датаПоследнегоИзменения() const
QLocale локаль() const
void установитьИмяФайла(const QString &file)
void установитьЛокаль(const QLocale &locale)
qint64 размер() const
QByteArray неСжатыеДанные() const
qint64 неСжатыйРазмер() const

Статические члены публичного доступа

bool зарегистрироватьРесурс(const QString &rccFileName, const QString &mapRoot = QString())
bool зарегистрироватьРесурс(const uchar *rccData, const QString &mapRoot = QString())
bool отменитьРегистрациюРесурса(const QString &rccFileName, const QString &mapRoot = QString())
bool отменитьРегистрациюРесурса(const uchar *rccData, const QString &mapRoot = QString())

Защищенные функции

QStringList подчиненныеЭлементы() const
bool являетсяДиректорией() const
bool являетсяФайлом() 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.

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

[since 5.13] перечисление QResource::Сжатие

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

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

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

См. также алгоритмСжатия().

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

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

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

См. также QFileInfo, QDir::searchPaths(), установитьИмяФайла() и установитьЛокаль().

QResource::~QResource()

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

QString QResource::полныйПутьФайла() const

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

См. также имяФайла().

[protected] QStringList QResource::подчиненныеЭлементы() const

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

См. также являетсяДиректорией().

[since 5.13] QResource::Compression QResource::compressionAlgorithm() const

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

Если функция возвращает 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

Возвращает прямой доступ к сегменту только для чтения данных, представляемых этим ресурсом. Если ресурс сжат, возвращаемые данные также сжаты. Затем вызывающий код должен разархивировать данные или использовать uncompressedData(). Если ресурс является каталогом, nullptr возвращается.

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

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

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

[since 5.15] QByteArray QResource::uncompressedData() const

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

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

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

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

[since 5.15] qint64 QResource::uncompressedSize() const

Возвращает размер данных в этом ресурсе. Если данные не были сжаты, эта функция возвращает то же значение, что и size(). Если они были, то эта функция извлекает размер исходных нескомпрессированных данных из сохранённого потока.

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

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

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

Spec-Zone.ru

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