Класс 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 |
| 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.
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/archives/qt-5.6/qresource.html