QPluginLoader Class
Die Klasse „QPluginLoader“ lädt ein Plugin zur Laufzeit. Mehr...
| Kopfzeile: | #include <QPluginLoader> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Erbt von: | QObject |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QPluginLoader ist Teil der Plugin-Klassen.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Eigenschaften
Öffentliche Funktionen
| 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() |
Statische öffentliche Mitglieder
| QObjectList | staticInstances() |
| QList<QStaticPlugin> | staticPlugins() |
Zugehörige Nicht-Mitglieder
| void | qRegisterStaticPluginFunction(QStaticPlugin plugin) |
Ausführliche Beschreibung
QPluginLoader ermöglicht den Zugriff auf ein Qt-Plugin. Ein Qt-Plugin ist in einer gemeinsam genutzten Bibliothek (einer DLL) gespeichert und bietet gegenüber gemeinsam genutzten Bibliotheken, auf die über ` QLibrary` zugegriffen wird, folgende Vorteile:
- QPluginLoader überprüft, ob ein Plugin mit derselben Qt-Version verknüpft ist wie die Anwendung.
- QPluginLoader bietet direkten Zugriff auf ein Root-Komponentenobjekt (instance()), anstatt Sie zu zwingen, eine C-Funktion manuell aufzulösen.
Eine Instanz eines QPluginLoader-Objekts arbeitet mit einer einzelnen gemeinsam genutzten Bibliotheksdatei, die wir als Plugin bezeichnen. Sie bietet plattformunabhängigen Zugriff auf die Funktionalität des Plugins. Um anzugeben, welches Plugin geladen werden soll, übergeben Sie entweder einen Dateinamen im Konstruktor oder legen Sie ihn mit ` setFileName()` fest.
Die wichtigsten Funktionen sind ` load()` zum dynamischen Laden der Plugin-Datei, ` isLoaded()` zur Überprüfung, ob das Laden erfolgreich war, und ` instance()` für den Zugriff auf die Stammkomponente im Plugin. Die Funktion ` instance()` versucht implizit, das Plugin zu laden, falls es noch nicht geladen wurde. Es können mehrere Instanzen von `QPluginLoader` verwendet werden, um auf dasselbe physische Plugin zuzugreifen.
Einmal geladen, verbleiben Plugins im Speicher, bis alle Instanzen von `QPluginLoader` entladen wurden oder bis die Anwendung beendet wird. Sie können versuchen, ein Plugin mit ` unload()` zu entladen. Wenn jedoch andere Instanzen von `QPluginLoader` dieselbe Bibliothek verwenden, schlägt der Aufruf fehl, und das Entladen erfolgt erst, wenn jede Instanz ` unload()` aufgerufen hat. Unmittelbar vor dem Entladen wird auch die Stammkomponente gelöscht.
Weitere Informationen darüber, wie Sie Ihre Anwendung durch Plugins erweiterbar machen können, finden Sie unter „So erstellen Sie Qt-Plugins “.
Beachten Sie, dass der QPluginLoader nicht verwendet werden kann, wenn Ihre Anwendung statisch gegen Qt verknüpft ist. In diesem Fall müssen Sie Plugins ebenfalls statisch verknüpfen. Sie können „ QLibrary “ verwenden, wenn Sie dynamische Bibliotheken in eine statisch verknüpfte Anwendung laden müssen.
Siehe auch „ QLibrary “.
Dokumentation zu Eigenschaften
fileName : QString
Diese Eigenschaft enthält den Dateinamen des Plugins
Wir empfehlen, die Dateiendung im Dateinamen wegzulassen, da QPluginLoader automatisch nach der Datei mit der entsprechenden Endung sucht (siehe QLibrary::isLibrary()).
Beim Laden des Plugins durchsucht QPluginLoader alle durch QCoreApplication::libraryPaths() angegebenen Plugin-Speicherorte, es sei denn, der Dateiname enthält einen absoluten Pfad. Nach erfolgreichem Laden des Plugins gibt fileName() den vollqualifizierten Dateinamen des Plugins zurück, einschließlich des vollständigen Pfads zum Plugin, sofern dieser im Konstruktor angegeben oder an setFileName() übergeben wurde.
Existiert der Dateiname nicht, wird er nicht gesetzt. Diese Eigenschaft enthält dann eine leere Zeichenfolge.
Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.
Zugriffsfunktionen:
| QString | fileName() const |
| void | setFileName(const QString &fileName) |
Siehe auch ` load()`.
loadHints : QLibrary::LoadHints
Geben Sie der Funktion ` load()` Hinweise dazu, wie sie sich verhalten soll.
Sie können Hinweise dazu geben, wie die Symbole im Plugin aufgelöst werden sollen. Seit Qt 5.7 ist „ QLibrary::PreventUnloadHint “ standardmäßig gesetzt.
Eine vollständige Beschreibung der Funktionsweise dieser Eigenschaft finden Sie in der Dokumentation zu „ QLibrary::loadHints “.
Zugriffsfunktionen:
| QLibrary::LoadHints | loadHints() const |
| void | setLoadHints(QLibrary::LoadHints loadHints) |
Siehe auch „ QLibrary::loadHints “.
Dokumentation zu Mitgliedsfunktionen
[explicit] QPluginLoader::QPluginLoader(QObject *parent = nullptr)
Erstellt einen Plugin-Loader mit der angegebenen ` parent`.
[explicit] QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent = nullptr)
Erstellt einen Plugin-Lader mit der angegebenen parent, der das durch fileName angegebene Plugin lädt.
Damit die Datei geladen werden kann, muss ihre Dateiendung eine für die jeweilige Plattform gültige Endung für eine ladbare Bibliothek sein, z. B. „ .so “ unter Unix, „- .dylib “ unter macOS und iOS sowie „ .dll “ unter Windows. Die Dateiendung kann mit „ QLibrary::isLibrary()“ überprüft werden.
Siehe auch setFileName().
[virtual noexcept] QPluginLoader::~QPluginLoader()
Löscht das QPluginLoader -Objekt.
Sofern „ unload()“ nicht explizit aufgerufen wurde, verbleibt das Plugin im Speicher, bis die Anwendung beendet wird.
Siehe auch „ isLoaded()“ und „ unload()“.
QString QPluginLoader::errorString() const
Gibt eine Textzeichenfolge mit der Beschreibung des zuletzt aufgetretenen Fehlers zurück.
QObject *QPluginLoader::instance()
Gibt das Stammkomponentenobjekt des Plugins zurück. Das Plugin wird bei Bedarf geladen. Die Funktion gibt „ nullptr “ zurück, wenn das Plugin nicht geladen werden konnte oder wenn das Stammkomponentenobjekt nicht instanziiert werden konnte.
Wurde das Stammkomponentenobjekt zerstört, wird durch den Aufruf dieser Funktion eine neue Instanz erstellt.
Die von dieser Funktion zurückgegebene Stammkomponente wird nicht gelöscht, wenn das ` QPluginLoader ` zerstört wird. Wenn Sie sicherstellen möchten, dass die Stammkomponente gelöscht wird, sollten Sie ` unload()` aufrufen, sobald Sie keinen Zugriff mehr auf die Kernkomponente benötigen. Wenn die Bibliothek schließlich entladen wird, wird die Stammkomponente automatisch gelöscht.
Das Komponentenobjekt ist ein ` QObject`. Verwenden Sie ` qobject_cast()` (), um auf die Schnittstellen zuzugreifen, die für Sie von Interesse sind.
Siehe auch ` load()`.
bool QPluginLoader::isLoaded() const
Gibt „ true “ zurück, wenn das Plugin geladen ist; andernfalls wird „ false “ zurückgegeben.
Siehe auch load().
bool QPluginLoader::load()
Lädt das Plugin und gibt „ true “ zurück, wenn das Plugin erfolgreich geladen wurde; andernfalls wird „ false “ zurückgegeben. Da „ instance()“ diese Funktion immer aufruft, bevor Symbole aufgelöst werden, ist es nicht notwendig, sie explizit aufzurufen. In manchen Situationen möchten Sie das Plugin möglicherweise im Voraus laden; in diesem Fall würden Sie diese Funktion verwenden.
Siehe auch ` unload()`.
QJsonObject QPluginLoader::metaData() const
Gibt die Metadaten für dieses Plugin zurück. Bei den Metadaten handelt es sich um Daten, die beim Kompilieren des Plugins mithilfe des Makros „ Q_PLUGIN_METADATA()“ im JSON-Format festgelegt wurden.
Die Metadaten können schnell und ressourcenschonend abgefragt werden, ohne das Plugin tatsächlich zu laden. Dadurch ist es beispielsweise möglich, die Funktionen des Plugins dort zu speichern und die Entscheidung, ob das Plugin geladen werden soll, von diesen Metadaten abhängig zu machen.
[static] QObjectList QPluginLoader::staticInstances()
Gibt eine Liste der statischen Plugin-Instanzen (Root-Komponenten) zurück, die vom Plugin-Loader verwaltet werden.
Siehe auch ` staticPlugins()`.
[static] QList<QStaticPlugin> QPluginLoader::staticPlugins()
Gibt eine Liste der vom Plugin-Loader verwalteten QStaticPlugins zurück. Die Funktion ähnelt der Funktion „ staticInstances()“, mit dem Unterschied, dass ein „ QStaticPlugin “ zusätzlich Metadaten enthält.
Siehe auch ` staticInstances()`.
bool QPluginLoader::unload()
Entlädt das Plugin und gibt „ true “ zurück, wenn das Plugin entladen werden konnte; andernfalls wird „ false “ zurückgegeben.
Dies geschieht automatisch beim Beenden der Anwendung, sodass Sie diese Funktion normalerweise nicht aufrufen müssen.
Wenn andere Instanzen von ` QPluginLoader ` dasselbe Plugin verwenden, schlägt der Aufruf fehl, und das Entladen erfolgt erst, wenn jede Instanz `unload()` aufgerufen hat.
Versuchen Sie nicht, die Root-Komponente zu löschen. Verlassen Sie sich stattdessen darauf, dass unload() sie bei Bedarf automatisch löscht.
Verwandte Nicht-Mitglieder
void qRegisterStaticPluginFunction(QStaticPlugin plugin)
Registriert die mit dem Plugin-Loader angegebene „ plugin “ und wird von „ Q_IMPORT_PLUGIN()“ verwendet.
© 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.