# class KPluginLoader

###

Module | kdecore
Namespace |
Class | KPluginLoader
Inherits | QPluginLoader

\class KPluginLoader kpluginloader.h <KPluginLoader>

This class can be used to dynamically load a plugin library at runtime.

This class makes sure that the Qt and KDE versions used to compile this library aren't newer then the ones currently used.

This class is reentrant, you can load plugins from different threads. You can also have multiple PluginLoaders for one library without negative effects. The object obtained with factory() or the inherited method QPluginLoader.instance() is cached inside the library. If you call factory() or instance() multiple times, you will always get the same object, even from different threads and different KPluginLoader instances. You can delete this object easily, a new one will be created if factory() or instance() is called afterwards. factory() uses instance() internally.

KPluginLoader inherits QPluginLoader.unload(). It safe to call this method if you loaded a plugin and decide not to use it for some reason. But as soon as you start to use the factory from the plugin, you should stay away from it. It's nearly impossible to keep track of all objects created directly or indirectly from the plugin and all other pointers into plugin code. Using unload() in this case is asking for trouble. If you really need to unload your plugins, you have to take care to convert the clipboard content to text, because the plugin could have registered a custom mime source. You also have to delete the factory of the plugin, otherwise you will create a leak. The destructor of KPluginLoader doesn't call unload.

Sample code:

    KPluginLoader loader( ...library or kservice... );
    KPluginFactory* factory = loader.factory();
    if (!factory) {
    kWarning() << "Error loading plugin:" << loader.errorString();
    } else {
    MyInterface* obj = factory->create<MyInterface>();
    if (!obj) {
    kWarning() << "Error creating object";
    }
    }

See also KPluginFactory

Author Bernhard Loos <nhuh.put@web.de>

### methods

- KPluginLoader (plugin, componentdata, parent)

  returns ctor
  KDE 4.1.0 and later only

  Argument | Type | Default
  --- | --- | ---
  plugin | QString |
  componentdata | KComponentData | KGlobal.mainComponent()
  parent | QObject | 0

  Used this constructor to load a plugin with a given library name. Plugin libraries shouldn't have a 'lib' prefix.

  plugin - The name of the plugin library.

  componentdata - The KStandardDirs object from componentdata is used to search the library.

  parent - A parent object.

- KPluginLoader (service, componentdata, parent)

  returns ctor
  KDE 4.1.0 and later only

  Argument | Type | Default
  --- | --- | ---
  service | KService |
  componentdata | KComponentData | KGlobal.mainComponent()
  parent | QObject | 0

  Used this constructor to load a plugin from a service. The service must contain a library.

  service - The service for which the library should be loaded.

  componentdata - The KStandardDirs object from componentdata is used to search the library.

  parent - A parent object.

- KPluginLoader (a0)

  returns ctor
  Not implemented

  Argument | Type | Default
  --- | --- | ---
  a0 | KPluginLoader |

- KPluginLoader (a0, a1, a2)

  returns ctor
  before KDE 4.1.0 only

  Argument | Type | Default
  --- | --- | ---
  a0 | QString |
  a1 | KComponentData | KGlobal.mainComponent()
  a2 | QObject | 0

- KPluginLoader (a0, a1, a2)

  returns ctor
  before KDE 4.1.0 only

  Argument | Type | Default
  --- | --- | ---
  a0 | KService |
  a1 | KComponentData | KGlobal.mainComponent()
  a2 | QObject | 0

- errorString ( )

  returns QString

  Queries the last error. \returns The description of the last error.

- factory ( )

  returns KPluginFactory

  Used to obtain the factory object of the plugin. You have to give a class which inherits KPluginFactory to K_EXPORT_PLUGIN to use this method.

  \returns The factory of the plugin or 0 on error.

- isLoaded ( )

  returns bool

- load ( )

  returns bool

  Performs the loading of the plugin.

- pluginName ( )

  returns QString

  The name of this plugin as given to the constructor. \returns the plugin name

- pluginVersion ( )

  returns quint32

  Queries the plugin version. \returns The version given to K_EXPORT_PLUGIN_VERSION or (quint32) -1 if not set.