[SOLVED]Qt Plugin metadata



  • I'm working on create my own Qt plugin based application (as used in Echo Plugin and Plug & Paint Examples) but I couldn't know to to monitor versions of my plugins.

    Where I've to store plugin metadata for versioning it?

    As I know Plugin.json file is the place where I can store metadata of the plugin so I input the following:
    @{
    "name" : "pluginA",
    "version" : "0.0.1",
    "dependencies" : []
    }@

    but I failed to load it through:
    @pluginLoader.metaData().value("name").toString();
    pluginLoader.metaData().value("version").toString();@



  • You could define an int version() call in your interface:

    @
    abstract int version()=0;
    @

    and override this in your derived Plugin.
    I know this is not what you asked for, but it would solve your problem. I don't know how to use the plugin metadata.


  • Lifetime Qt Champion

    Hi,

    Did you add the Q_PLUGIN_METADATA line in your plugin header ?



  • [quote author="MichelS" date="1372677981"]You could define an int version() call in your interface:

    @
    abstract int version()=0;
    @

    and override this in your derived Plugin.[/quote]

    Actually this is first solution pinged in head but I want to kknow how to get benefit of Plugin Metadata



  • [quote author="SGaist" date="1372680937"]Hi,

    Did you add the Q_PLUGIN_METADATA line in your plugin header ?[/quote]

    Sure,

    @class MyPlugin : public QObject, Interface
    {
    Q_OBJECT
    #if QT_VERSION >= 0x050000
    Q_PLUGIN_METADATA(IID "ly.ecs.plugin.0.0.2" FILE "Plugin.json")
    Q_INTERFACES(Interface)
    #endif // QT_VERSION >= 0x050000

    public:
    MyPlugin(QObject parent = 0);
    QPushButton
    someObject(QWidget *parent=0);
    };@



  • Based on my own experience I am kind of skeptical whenever those macros are involved. Have you tried to re-run qmake (Build - run qmake)? For me, this fixed an error I had been chasing for over an hour...



  • [quote author="Buggy" date="1372753860"]Based on my own experience I am kind of skeptical whenever those macros are involved. Have you tried to re-run qmake (Build - run qmake)? For me, this fixed an error I had been chasing for over an hour...[/quote]

    sure I did.
    I'm asking about the principle not fixing a problem.



  • I'm still stick to this issue and couldn't find any way to fix it. I need metadata to be able to read plugin information before loading it which metadata offers it.

    P.S. I'm using Qt 5.1


  • Lifetime Qt Champion

    Hi,

    Did you dump the content of pluginLoader.metaData() ?

    I just tried with a simple plugin and got the value of name using:
    @pluginLoader.metaData().value("MetaData").toObject().value("name").toString();@

    Also don't forget to "touch" the plugin header file before rebuilding to take the json file modifications in account.



  • As AGalst suggested, you forget the key "MetaData" if you want to get access the json file contents passed in the Q_PLUGIN_METADATA. Other information such as IID can be access through the key "IID" etc.



  • Thanks a lot guys, it works fine.

    I wonder does this info mentioned in Qt docs?


  • Lifetime Qt Champion

    You're welcome !

    From the ones I searched through, no, this call for an update to the documentation



  • [quote]From the ones I searched through, no, this call for an update to the documentation[/quote]

    Usually I create wiki page for missing docs but because I haven't the suitable knowledge about Qt Plugins, May you please create a wiki page.


  • Lifetime Qt Champion

    Correction to the doc would have a wider impact. Can you point me to your wiki entries so I can see what would be a good addition to the official documentation ?



  • bq. Can you point me to your wiki entries

    I didn't write any entries I just suggested to add them by you.


  • Lifetime Qt Champion

    For the quick road, I have added a doc note



  • [quote author="SGaist" date="1375821248"]For the quick road, I have added a doc note[/quote]

    Thanks a lot :)



  • Definately much appreciated. I was trying to use the new metadata interface for the same reasons, and found the same lack of details in the docs. I have my own implementation working properly now (thanks to this thread), but it would be nice to have some references in the docs about this metadata and json structure.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.