Spec-Zone.ru › Qt 5.13

Класс QPluginLoader

Класс QPluginLoader загружает плагин во время выполнения. Подробнее...

Заголовок: #include <QPluginLoader>
qmake: QT += core
Наследует: QObject
  • Список всех членов, включая унаследованные

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

Свойства

  • fileName : QString
  • loadHints : QLibrary::LoadHints

Открытые функции

QPluginLoader(const QString &fileName, QObject *parent = nullptr)
QPluginLoader(QObject *parent = nullptr)
virtual ~QPluginLoader()
QString errorString() const
QString fileName() const
QObject * instance()
bool isLoaded() const
bool load()
QLibrary::LoadHints loadHints() const
QJsonObject metaData() const
void setFileName(const QString &fileName)
void setLoadHints(QLibrary::LoadHints loadHints)
bool unload()

Статические открытые члены

QObjectList staticInstances()
QVector<QStaticPlugin> staticPlugins()

Связанные нечлены

void qRegisterStaticPluginFunction(QStaticPlugin plugin)

Подробное описание

QPluginLoader предоставляет доступ к плагину Qt. Плагин Qt хранится в динамической библиотеке (DLL) и предлагает следующие преимущества по сравнению с динамическими библиотеками, доступными с помощью QLibrary:

  • QPluginLoader проверяет, что плагин связан с той же версией Qt, что и приложение.
  • QPluginLoader предоставляет прямой доступ к корневому объекту компонента (instance()), вместо того, чтобы заставлять вас вручную разрешать C-функцию.

Экземпляр объекта QPluginLoader работает с одним файлом динамической библиотеки, который мы называем плагином. Он предоставляет доступ к функциональности плагина независимо от платформы. Чтобы указать, какой плагин загрузить, передайте имя файла в конструктор или установите его с помощью setFileName().

Наиболее важные функции — load() для динамической загрузки файла плагина, isLoaded() для проверки успешности загрузки и instance() для доступа к корневому компоненту в плагине. Функция instance() неявно пытается загрузить плагин, если он еще не загружен. Несколько экземпляров QPluginLoader могут быть использованы для доступа к одному и тому же физическому плагину.

После загрузки плагины остаются в памяти до тех пор, пока все экземпляры QPluginLoader не будут разгружены или пока приложение не завершит работу. Вы можете попытаться разгрузить плагин с помощью unload(), но если другие экземпляры QPluginLoader используют ту же библиотеку, вызов завершится неудачей, и разгрузка произойдет только после того, как каждый экземпляр вызовет unload(). Непосредственно перед разгрузкой корневой компонент также будет удален.

См. Как создать плагины Qt для получения дополнительной информации о том, как сделать ваше приложение расширяемым с помощью плагинов.

Обратите внимание, что QPluginLoader не может быть использован, если ваше приложение статически скомпилировано с Qt. В этом случае вы также должны статически скомпилировать плагины. Вы можете использовать QLibrary, если вам нужно загрузить динамические библиотеки в статически скомпилированном приложении.

См. также QLibrary и Пример Plug & Paint.

Документация по свойствам

fileName : QString

Это свойство содержит имя файла плагина.

Мы рекомендуем опускать расширение файла в имени файла, так как QPluginLoader автоматически будет искать файл с соответствующим расширением (см. QLibrary::isLibrary()).

При загрузке плагина QPluginLoader ищет в текущем каталоге и во всех местах расположения плагинов, указанных в QCoreApplication::libraryPaths(), если имя файла не имеет абсолютного пути. После успешной загрузки плагина fileName() возвращает полностью квалифицированное имя файла плагина, включая полный путь к плагину, если он был задан в конструкторе или передан в setFileName().

Если файла с заданным именем не существует, он не будет установлен. В этом случае свойство будет содержать пустую строку.

По умолчанию это свойство содержит пустую строку.

Функции доступа:

QString fileName() const
void setFileName(const QString &fileName)

См. также load().

loadHints : QLibrary::LoadHints

Предоставьте функции load() некоторые подсказки о ее поведении.

Вы можете дать подсказки о том, как должны разрешаться символы в плагине. По умолчанию с Qt 5.7 устанавливается QLibrary::PreventUnloadHint.

См. документацию по QLibrary::loadHints для полного описания работы этого свойства.

Это свойство было введено в Qt 4.4.

Функции доступа:

QLibrary::LoadHints loadHints() const
void setLoadHints(QLibrary::LoadHints loadHints)

См. также QLibrary::loadHints.

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

QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent = nullptr)

Создает загрузчик плагинов с указанным parent, который загрузит плагин, заданный fileName.

Для загрузки файл должен иметь допустимое расширение для загружаемой библиотеки в соответствии с платформой, например, .so в Unix, - .dylib в macOS и iOS, и .dll в Windows. Расширение можно проверить с помощью QLibrary::isLibrary().

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

QPluginLoader::QPluginLoader(QObject *parent = nullptr)

Создает загрузчик плагинов с указанным parent.

[virtual] QPluginLoader::~QPluginLoader()

Уничтожает объект QPluginLoader.

Если unload() не был вызван явно, плагин остается в памяти до завершения работы приложения.

См. также isLoaded() и unload().

QString QPluginLoader::errorString() const

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

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

QObject *QPluginLoader::instance()

Возвращает корневый объект компонента плагина. Плагин загружается при необходимости. Функция возвращает nullptr если плагин не удалось загрузить или корневой объект компонента не удалось создать.

Если корневой объект компонента был уничтожен, вызов этой функции создаёт новый экземпляр.

Корневой компонент, возвращаемый этой функцией, не удаляется при уничтожении QPluginLoader. Если вы хотите убедиться, что корневой компонент будет удалён, вы должны вызвать unload() как только вам больше не нужно обращаться к основному компоненту. При окончательной разгрузке библиотеки корневой компонент будет автоматически удалён.

Объект компонента является QObject. Используйте qobject_cast(), чтобы получить доступ к интересующим вас интерфейсам.

См. также load().

bool QPluginLoader::isLoaded() const

Возвращает true если плагин загружен; в противном случае возвращает false.

См. также load().

bool QPluginLoader::load()

Загружает плагин и возвращает true если плагин был загружен успешно; в противном случае возвращает false. Поскольку instance() всегда вызывает эту функцию перед разрешением любых символов, нет необходимости вызывать её явно. В некоторых ситуациях вам может потребоваться предварительно загрузить плагин, в этом случае вы используете эту функцию.

См. также unload().

QJsonObject QPluginLoader::metaData() const

Возвращает метаданные для этого плагина. Метаданные — это данные, указанные в формате json с использованием макроса Q_PLUGIN_METADATA() при компиляции плагина.

Метаданные можно запросить быстро и без особых затрат, не загружая сам плагин. Это позволяет, например, хранить возможности плагина в них и принимать решение о загрузке плагина, основываясь на этих метаданных.

[static] QObjectList QPluginLoader::staticInstances()

Возвращает список статических экземпляров плагина (корневых компонентов), хранящихся в загрузчике плагинов.

См. также staticPlugins().

[static] QVector<QStaticPlugin> QPluginLoader::staticPlugins()

Возвращает список QStaticPlugins, хранящихся в загрузчике плагинов. Функция похожа на staticInstances(), с добавлением того, что QStaticPlugin также содержит информацию о метаданных.

См. также staticInstances().

bool QPluginLoader::unload()

Разгружает плагин и возвращает true если плагин удалось разгрузить; в противном случае возвращает false.

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

Если другие экземпляры QPluginLoader используют тот же плагин, вызов завершится неудачно, и разгрузка произойдёт только тогда, когда каждый экземпляр вызовет unload().

Не пытайтесь удалить корневой компонент. Вместо этого полагайтесь на то, что unload() автоматически удалит его при необходимости.

См. также instance() и load().

Связанные нечленные функции

void QPluginLoader::qRegisterStaticPluginFunction(QStaticPlugin plugin)

Регистрирует указанный plugin с загрузчиком плагинов и используется Q_IMPORT_PLUGIN().

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

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

Spec-Zone.ru

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