Класс QResource
Класс QResource предоставляет интерфейс для прямого чтения из ресурсов. Подробнее...
| Заголовок: | #include <QResource> |
| qmake: | QT += core |
| С момента: | Qt 4.2 |
Примечание: Все функции в этом классе являются реентерабельными.
Публичные функции
| QResource(const QString &file = QString(), const QLocale &locale = QLocale()) | |
| ~QResource() | |
| QString | absoluteFilePath() 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 |
Защищённые переменные
| int | d_ptr |
Подробное описание
Класс QResource предоставляет интерфейс для прямого чтения из ресурсов.
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::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().
[protected] QStringList QResource::children() const
Возвращает список всех ресурсов в этом каталоге, если ресурс представляет собой файл, список будет пустым.
См. также isDir().
const uchar *QResource::data() const
Возвращает прямой доступ к только для чтения сегменту данных, который представляет этот ресурс. Если ресурс сжат, возвращаемые данные сжаты, и необходимо использовать qUncompress() для доступа к данным. Если ресурс является каталогом, возвращается 0.
См. также size(), isCompressed() и isFile().
QString QResource::fileName() const
Возвращает полный путь к файлу, который представляет этот QResource, как он был передан.
См. также setFileName() и absoluteFilePath().
bool QResource::isCompressed() const
Возвращает true, если ресурс представляет собой файл, и данные, его поддерживающие, находятся в сжатом формате, в противном случае возвращает false.
[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
Возвращает размер данных, поддерживающих ресурс.
[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.12/qresource.html