QPluginLoader Class
La classe QPluginLoader charge un plugin à l'exécution. Plus d'informations...
| En-tête : | #include <QPluginLoader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Héritages : | QObject |
- Liste de tous les membres, y compris les membres hérités
- QPluginLoader fait partie de Plugin Classes.
Note : 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() |
Non-membres apparenté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 auxquelles on accède à l'aide de 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 une fonction C manuellement.
Une instance d'un objet QPluginLoader opère sur un seul fichier de bibliothèque partagée, que nous appelons un plugin. Il permet d'accéder aux fonctionnalités du plugin de manière indépendante de la plateforme. 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 termine. Vous pouvez tenter de décharger un plugin en utilisant unload(), mais si d'autres instances de QPluginLoader utilisent la même bibliothèque, l'appel échouera, et le déchargement ne se produira que lorsque toutes les instances auront appelé unload(). Juste avant le déchargement, le composant racine sera également supprimé.
Voir Comment créer des plugins Qt pour plus d'informations sur la manière de rendre votre application extensible grâce à des plugins.
Notez que le 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 devez charger des bibliothèques dynamiques dans une application à liaison statique.
Voir aussi QLibrary.
Documentation sur les propriétés
fileName : QString
Cette propriété contient le nom de fichier du plugin
Il est recommandé d'omettre le suffixe du fichier dans le nom du fichier, car QPluginLoader recherchera automatiquement le fichier avec le suffixe approprié (voir QLibrary::isLibrary()).
Lors du chargement du plugin, QPluginLoader recherche dans tous les emplacements du plugin spécifiés par QCoreApplication::libraryPaths(), à moins que le nom du fichier ne contienne un chemin absolu. Une fois le plugin chargé avec succès, fileName() renvoie le nom de fichier pleinement qualifié du plugin, y compris le chemin d'accès complet au plugin s'il a été donné 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 aussi load().
loadHints : QLibrary::LoadHints
Donnez à la fonction load() des indications sur la manière dont elle doit se comporter.
Vous pouvez donner des indications sur la manière dont les symboles du plugin sont résolus. Par défaut, depuis Qt 5.7, QLibrary::PreventUnloadHint est activé.
Voir la documentation de 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)
Construit un chargeur de plugins avec l'adresse parent.
[explicit] QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent = nullptr)
Construit un chargeur de plugin avec le fichier parent qui chargera le plugin spécifié par fileName.
Pour être chargeable, le suffixe du fichier doit être un suffixe valide pour une bibliothèque chargeable en fonction de la plateforme, par exemple .so sur Unix, - .dylib sur macOS et iOS, et .dll sur Windows. Le suffixe peut être vérifié avec QLibrary::isLibrary().
Voir également setFileName().
[virtual noexcept] QPluginLoader::~QPluginLoader()
Détruit l'objet QPluginLoader.
À moins que unload() n'ait été appelé explicitement, le plugin reste en mémoire jusqu'à ce que l'application se termine.
Voir aussi isLoaded() et unload().
QString QPluginLoader::errorString() const
Renvoie une chaîne de texte 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 à cette fonction crée une nouvelle instance.
Le composant racine renvoyé par cette fonction n'est pas supprimé lorsque le site QPluginLoader est détruit. Si vous voulez 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 central. Lorsque la bibliothèque est finalement déchargée, le composant racine est automatiquement supprimé.
L'objet composant est un QObject. Utilisez qobject_cast() pour accéder aux interfaces qui vous intéressent.
Voir aussi 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 plugin a été chargé avec succès ; sinon, renvoie false. Étant donné que instance() appelle toujours cette fonction avant de résoudre les symboles, il n'est pas nécessaire de l'appeler explicitement. Dans certaines situations, vous pouvez souhaiter que le plugin soit chargé à l'avance, auquel cas vous utiliserez cette fonction.
Voir aussi unload().
QJsonObject QPluginLoader::metaData() const
Renvoie les métadonnées de ce plugin. Les métadonnées sont des données spécifiées dans un format json en utilisant la macro Q_PLUGIN_METADATA() lors de la compilation du plugin.
Les 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 faire dépendre la décision de charger ou non le plugin de ces métadonnées.
[static] QObjectList QPluginLoader::staticInstances()
Renvoie une liste d'instances statiques de plugins (composants racine) détenues par le chargeur de plugins.
Voir aussi staticPlugins().
[static] QList<QStaticPlugin> QPluginLoader::staticPlugins()
Renvoie une liste de QStaticPlugins détenus par le chargeur de plugins. La fonction est similaire à staticInstances(), avec l'ajout qu'un QStaticPlugin contient également des informations sur les métadonnées.
Voir aussi staticInstances().
bool QPluginLoader::unload()
Décharge le plugin et renvoie true si le plugin a pu être déchargé ; sinon, renvoie false.
Cela se produit automatiquement à la fin de l'application, de sorte que vous ne devriez 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 unload() le supprimera automatiquement si nécessaire.
Non-membres apparentés
void qRegisterStaticPluginFunction(QStaticPlugin plugin)
Enregistre le plugin spécifié auprès du chargeur de plugins et est utilisé par 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.