QPluginLoader Class
La clase QPluginLoader carga un plugin en tiempo de ejecución. Más...
| Cabecera: | #include <QPluginLoader> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QObject |
- Lista de todos los miembros, incluyendo los heredados
- QPluginLoader es parte de Plugin Classes.
Nota: Todas las funciones de esta clase son reentrantes.
Propiedades
Funciones públicas
| QPluginLoader(QObject *parent = nullptr) | |
| QPluginLoader(const QString &fileName, 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() |
Miembros públicos estáticos
| QObjectList | staticInstances() |
| QList<QStaticPlugin> | staticPlugins() |
No miembros relacionados
| void | qRegisterStaticPluginFunction(QStaticPlugin plugin) |
Descripción Detallada
QPluginLoader proporciona acceso a un plugin de Qt. Un plugin de Qt se almacena en una librería compartida (una DLL) y ofrece estas ventajas sobre las librerías compartidas a las que se accede usando QLibrary:
- QPluginLoader comprueba que un plugin está enlazado con la misma versión de Qt que la aplicación.
- QPluginLoader proporciona acceso directo a un objeto componente raíz (instance()), en lugar de forzarte a resolver una función C manualmente.
Una instancia de un objeto QPluginLoader opera sobre un único archivo de biblioteca compartida, al que llamamos plugin. Proporciona acceso a la funcionalidad del plugin de forma independiente de la plataforma. Para especificar qué plugin cargar, se puede pasar un nombre de archivo en el constructor o establecerlo con setFileName().
Las funciones más importantes son load() para cargar dinámicamente el archivo del complemento, isLoaded() para comprobar si la carga se ha realizado correctamente y instance() para acceder al componente raíz del complemento. La función instance() implícitamente intenta cargar el plugin si aún no ha sido cargado. Múltiples instancias de QPluginLoader pueden ser usadas para acceder al mismo plugin físico.
Una vez cargados, los plugins permanecen en memoria hasta que todas las instancias de QPluginLoader han sido descargadas, o hasta que la aplicación termina. Puedes intentar descargar un plugin usando unload(), pero si otras instancias de QPluginLoader están usando la misma librería, la llamada fallará, y la descarga sólo ocurrirá cuando todas las instancias hayan llamado a unload(). Justo antes de que ocurra la descarga, el componente raíz también será eliminado.
Ver Cómo Crear Plugins Qt para más información sobre cómo hacer tu aplicación extensible a través de plugins.
Ten en cuenta que el QPluginLoader no puede usarse si tu aplicación está enlazada estáticamente con Qt. En este caso, también tendrás que enlazar a los plugins estáticamente. Puedes usar QLibrary si necesitas cargar librerías dinámicas en una aplicación enlazada estáticamente.
Véase también QLibrary.
Documentación de propiedades
fileName : QString
Esta propiedad contiene el nombre de archivo del plugin
Se recomienda omitir el sufijo del archivo en el nombre del archivo, ya que QPluginLoader buscará automáticamente el archivo con el sufijo apropiado (véase QLibrary::isLibrary()).
Al cargar el complemento, QPluginLoader busca en todas las ubicaciones de complementos especificadas por QCoreApplication::libraryPaths(), a menos que el nombre de archivo tenga una ruta absoluta. Después de cargar el complemento con éxito, fileName() devuelve el nombre de archivo completo del complemento, incluyendo la ruta completa al complemento si se dio en el constructor o se pasó a setFileName().
Si el nombre de archivo no existe, no se establecerá. Esta propiedad contendrá una cadena vacía.
Por defecto, esta propiedad contiene una cadena vacía.
Funciones de acceso:
| QString | fileName() const |
| void | setFileName(const QString &fileName) |
Véase también load().
loadHints : QLibrary::LoadHints
Dale a la función load() algunas pistas sobre cómo debe comportarse.
Puede dar pistas sobre cómo se resuelven los símbolos en el plugin. Por defecto desde Qt 5.7, QLibrary::PreventUnloadHint está activado.
Consulte la documentación de QLibrary::loadHints para una descripción completa de cómo funciona esta propiedad.
Funciones de acceso:
| QLibrary::LoadHints | loadHints() const |
| void | setLoadHints(QLibrary::LoadHints loadHints) |
Véase también QLibrary::loadHints.
Documentación de funciones miembro
[explicit] QPluginLoader::QPluginLoader(QObject *parent = nullptr)
Construye un cargador de complementos con la dirección parent.
[explicit] QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent = nullptr)
Construye un cargador de complementos con el parent dado que cargará el complemento especificado por fileName.
Para ser cargable, el sufijo del archivo debe ser un sufijo válido para una biblioteca cargable de acuerdo con la plataforma, por ejemplo .so en Unix, - .dylib en macOS e iOS, y .dll en Windows. El sufijo puede verificarse con QLibrary::isLibrary().
Véase también setFileName().
[virtual noexcept] QPluginLoader::~QPluginLoader()
Destruye el objeto QPluginLoader.
A menos que se haya llamado explícitamente a unload(), el complemento permanecerá en memoria hasta que finalice la aplicación.
Véase también isLoaded() y unload().
QString QPluginLoader::errorString() const
Devuelve una cadena de texto con la descripción del último error que se ha producido.
QObject *QPluginLoader::instance()
Devuelve el objeto componente raíz del plugin. El complemento se carga si es necesario. La función devuelve nullptr si no se ha podido cargar el complemento o si no se ha podido instanciar el objeto componente raíz.
Si el objeto componente raíz fue destruido, al llamar a esta función se crea una nueva instancia.
El componente raíz, devuelto por esta función, no se elimina cuando se destruye QPluginLoader. Si desea asegurarse de que el componente raíz se elimina, debe llamar a unload() en cuanto ya no necesite acceder al componente raíz. Cuando la biblioteca se descargue finalmente, el componente raíz se borrará automáticamente.
El objeto componente es un QObject. Utilice qobject_cast() para acceder a las interfaces que le interesen.
Véase también load().
bool QPluginLoader::isLoaded() const
Devuelve true si el plugin está cargado; en caso contrario devuelve false.
Véase también load().
bool QPluginLoader::load()
Carga el complemento y devuelve true si el complemento se ha cargado correctamente; en caso contrario devuelve false. Dado que instance() siempre llama a esta función antes de resolver cualquier símbolo, no es necesario llamarla explícitamente. En algunas situaciones puede que quieras que el plugin se cargue por adelantado, en cuyo caso utilizarías esta función.
Véase también unload().
QJsonObject QPluginLoader::metaData() const
Devuelve los metadatos de este complemento. Los metadatos son datos especificados en formato json utilizando la macro Q_PLUGIN_METADATA() al compilar el complemento.
Los metadatos pueden consultarse de forma rápida y económica sin necesidad de cargar el complemento. Esto hace posible, por ejemplo, almacenar las capacidades del complemento, y hacer que la decisión de cargar o no el complemento dependa de estos metadatos.
[static] QObjectList QPluginLoader::staticInstances()
Devuelve una lista de instancias de plugins estáticos (componentes raíz) mantenidos por el cargador de plugins.
Véase también staticPlugins().
[static] QList<QStaticPlugin> QPluginLoader::staticPlugins()
Devuelve una lista de QStaticPlugins mantenidos por el cargador de plugins. La función es similar a staticInstances() con el añadido de que QStaticPlugin también contiene información de metadatos.
Véase también staticInstances().
bool QPluginLoader::unload()
Descarga el complemento y devuelve true si el complemento pudo ser descargado; en caso contrario devuelve false.
Esto ocurre automáticamente al finalizar la aplicación, por lo que normalmente no debería ser necesario llamar a esta función.
Si otras instancias de QPluginLoader están utilizando el mismo plugin, la llamada fallará, y la descarga sólo se producirá cuando todas las instancias hayan llamado a unload().
No intentes borrar el componente raíz. En su lugar confía en que unload() lo borrará automáticamente cuando sea necesario.
No miembros relacionados
void qRegisterStaticPluginFunction(QStaticPlugin plugin)
Registra el plugin especificado con el cargador de plugins, y es utilizado por Q_IMPORT_PLUGIN().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.