QPluginLoader Class
La classe QPluginLoader charge un plugin lors de l'exécution. En savoir plus...
| En-tête : | #include <QPluginLoader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite de : | QObject |
- Liste de tous les membres, y compris les membres hérités
- QPluginLoader fait partie des classes de plugins.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Propriétés
Fonctions publiques
| 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() |
Membres publics statiques
| QObjectList | staticInstances() |
| QList<QStaticPlugin> | staticPlugins() |
Éléments non membres associés
| void | qRegisterStaticPluginFunction(QStaticPlugin plugin) |
Description détaillée
QPluginLoader permet d’accéder à un plugin Qt. Un plugin Qt est stocké dans une bibliothèque partagée (une DLL) et offre les avantages suivants par rapport aux bibliothèques partagées accessibles via QLibrary:
- QPluginLoader vérifie qu’un plugin est lié à la même version de Qt que l’application.
- QPluginLoader fournit un accès direct à un objet composant racine (instance()), au lieu de vous obliger à résoudre manuellement une fonction C.
Une instance d'un objet QPluginLoader opère sur un seul fichier de bibliothèque partagée, que l'on appelle un plugin. Elle permet d'accéder aux fonctionnalités du plugin de manière indépendante de la plate-forme. Pour spécifier le plugin à charger, il suffit de passer un nom de fichier dans le constructeur ou de le définir à l'aide de ` setFileName()`.
Les fonctions les plus importantes sont ` load()` pour charger dynamiquement le fichier du plugin, ` isLoaded()` pour vérifier si le chargement a réussi, et ` instance()` pour accéder au composant racine du plugin. La fonction ` instance()` tente implicitement de charger le plugin s’il n’a pas encore été chargé. Plusieurs instances de `QPluginLoader` peuvent être utilisées pour accéder au même plugin physique.
Une fois chargés, les plugins restent en mémoire jusqu’à ce que toutes les instances de QPluginLoader aient été déchargées, ou jusqu’à ce que l’application se ferme. Vous pouvez tenter de décharger un plugin à l’aide de ` unload()` (), mais si d’autres instances de `QPluginLoader` utilisent la même bibliothèque, l’appel échouera, et le déchargement n’aura lieu que lorsque chaque instance aura appelé ` unload()` (). Juste avant le déchargement, le composant racine sera également supprimé.
Consultez la section « Comment créer des plugins Qt » pour plus d’informations sur la manière de rendre votre application extensible via des plugins.
Notez que QPluginLoader ne peut pas être utilisé si votre application est liée statiquement à Qt. Dans ce cas, vous devrez également lier les plugins de manière statique. Vous pouvez utiliser QLibrary si vous avez besoin de charger des bibliothèques dynamiques dans une application liée statiquement.
Voir également QLibrary.
Documentation sur les propriétés
fileName : QString
Cette propriété contient le nom du fichier du plugin
Nous vous recommandons de ne pas inclure l'extension du fichier dans le nom de fichier, car QPluginLoader recherchera automatiquement le fichier avec l'extension appropriée (voir QLibrary::isLibrary()).
Lors du chargement du plugin, QPluginLoader effectue une recherche dans tous les emplacements de plugins spécifiés par QCoreApplication::libraryPaths(), sauf si le nom de fichier comporte un chemin absolu. Une fois le plugin chargé avec succès, fileName() renvoie le nom de fichier complet du plugin, y compris le chemin d'accès complet vers le plugin s'il a été fourni dans le constructeur ou transmis à setFileName().
Si le nom de fichier n’existe pas, il ne sera pas défini. Cette propriété contiendra alors une chaîne vide.
Par défaut, cette propriété contient une chaîne vide.
Fonctions d'accès :
| QString | fileName() const |
| void | setFileName(const QString &fileName) |
Voir également load().
loadHints : QLibrary::LoadHints
Fournissez à la fonction load() des indications sur la manière dont elle doit se comporter.
Vous pouvez fournir des indications sur la manière dont les symboles du plugin doivent être résolus. Par défaut, depuis Qt 5.7, la propriété QLibrary::PreventUnloadHint est définie.
Consultez la documentation d'QLibrary::loadHints pour une description complète du fonctionnement de cette propriété.
Fonctions d'accès :
| QLibrary::LoadHints | loadHints() const |
| void | setLoadHints(QLibrary::LoadHints loadHints) |
Voir également QLibrary::loadHints.
Documentation des fonctions membres
[explicit] QPluginLoader::QPluginLoader(QObject *parent = nullptr)
Crée un chargeur de plugins à partir de l'parent on fournie.
[explicit] QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent = nullptr)
Crée un chargeur de plugin avec l'parent fournie, qui chargera le plugin spécifié par fileName.
Pour pouvoir être chargé, l’extension du fichier doit être une extension valide pour une bibliothèque chargeable, conformément à la plate-forme, par exemple .so sous Unix, - .dylib sous macOS et iOS, et .dll sous Windows. L’extension peut être vérifiée à l’aide de la fonction QLibrary::isLibrary().
Voir également setFileName().
[virtual noexcept] QPluginLoader::~QPluginLoader()
Supprime l'objet ` QPluginLoader `.
À moins que la fonction ` unload()` n'ait été appelée explicitement, le plugin reste en mémoire jusqu'à la fermeture de l'application.
Voir également isLoaded() et unload().
QString QPluginLoader::errorString() const
Renvoie une chaîne de caractères contenant la description de la dernière erreur survenue.
QObject *QPluginLoader::instance()
Renvoie l'objet composant racine du plugin. Le plugin est chargé si nécessaire. La fonction renvoie ` nullptr ` si le plugin n'a pas pu être chargé ou si l'objet composant racine n'a pas pu être instancié.
Si l'objet composant racine a été détruit, l'appel de cette fonction crée une nouvelle instance.
Le composant racine, renvoyé par cette fonction, n’est pas supprimé lorsque l’ QPluginLoader est détruit. Si vous souhaitez vous assurer que le composant racine est supprimé, vous devez appeler unload() dès que vous n’avez plus besoin d’accéder au composant principal. Lorsque la bibliothèque est finalement déchargée, le composant racine sera automatiquement supprimé.
L’objet composant est un ` QObject`. Utilisez ` qobject_cast()` pour accéder aux interfaces qui vous intéressent.
Voir également load().
bool QPluginLoader::isLoaded() const
Renvoie « true » si le plugin est chargé ; sinon, renvoie « false ».
Voir aussi load().
bool QPluginLoader::load()
Charge le plugin et renvoie ` true ` si le chargement s'est déroulé avec succès ; sinon, renvoie ` false`. Étant donné que ` instance()` appelle toujours cette fonction avant de résoudre tout symbole, il n'est pas nécessaire de l'appeler explicitement. Dans certaines situations, vous pouvez souhaiter que le plugin soit chargé à l'avance ; dans ce cas, vous utiliserez cette fonction.
Voir également unload().
QJsonObject QPluginLoader::metaData() const
Renvoie les métadonnées de ce plugin. Ces métadonnées sont des données spécifiées au format JSON à l'aide de la macro Q_PLUGIN_METADATA() lors de la compilation du plugin.
Ces métadonnées peuvent être interrogées de manière rapide et peu coûteuse sans avoir à charger le plugin. Cela permet, par exemple, d’y stocker les capacités du plugin et de décider, en fonction de ces métadonnées, s’il convient ou non de charger le plugin.
[static] QObjectList QPluginLoader::staticInstances()
Renvoie une liste des instances de plugins statiques (composants racines) gérées par le chargeur de plugins.
Voir aussi staticPlugins().
[static] QList<QStaticPlugin> QPluginLoader::staticPlugins()
Renvoie une liste des objets `QStaticPlugins` gérés par le chargeur de plugins. Cette fonction est similaire à ` staticInstances()` à cette différence près qu’un objet ` QStaticPlugin ` contient également des métadonnées.
Voir également staticInstances().
bool QPluginLoader::unload()
Décharge le plugin et renvoie ` true ` si le plugin a pu être déchargé ; sinon, renvoie ` false`.
Cette opération s'effectue automatiquement à la fermeture de l'application ; vous ne devriez donc normalement pas avoir besoin d'appeler cette fonction.
Si d’autres instances de ` QPluginLoader ` utilisent le même plugin, l’appel échouera, et le déchargement n’aura lieu que lorsque toutes les instances auront appelé `unload()`.
N’essayez pas de supprimer le composant racine. Comptez plutôt sur le fait que la fonction unload() le supprimera automatiquement lorsque cela sera nécessaire.
Contenu connexe pour les non-membres
void qRegisterStaticPluginFunction(QStaticPlugin plugin)
Enregistre l'plugin ion spécifiée auprès du chargeur de plugins, et est utilisé par la fonction ` 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.