Класс 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 |
Подробное описание
Класс 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.9/qresource.html