Spec-Zone.ru › Qt 5.13

Класс QResource

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

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

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

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

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

Типы

перечисление 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 isCompressed() const
bool isValid() const
QDateTime lastModified() const
QLocale locale() const
void setFileName(const QString &file)
void setLocale(const QLocale &locale)
qint64 size() 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 — это объект, представляющий набор данных (и, возможно, дочерних элементов), относящихся к одному ресурсу. 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 Содержимое не сжато (isCompressed() равно false).
QResource::ZlibCompression 1 Содержимое сжато с использованием https://zlib.net и может быть распаковано с помощью функции qUncompress().
QResource::ZstdCompression 2 Содержимое сжато с использованием https://zstd.net. Для распаковки используйте функцию ZSTD_decompress из библиотеки zstd.

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

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

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

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::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 isCompressed(), data(), isFile()

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

const uchar *QResource::data() const

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

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

QString QResource::fileName() const

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

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

bool QResource::isCompressed() const

Возвращает true , если ресурс представляет собой файл, и данные, лежащие в его основе, находятся в сжатом формате, в противном случае — false. Если данные сжаты, проверьте compressionAlgorithm(), чтобы определить, какой алгоритм использовать для их разархивирования.

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

[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

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

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.13/qresource.html

Spec-Zone.ru

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