[SOLVED]Qt Plugin metadata
-
wrote on 30 Jun 2013, 18:41 last edited by
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();@ -
wrote on 1 Jul 2013, 11:26 last edited by
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. -
Hi,
Did you add the Q_PLUGIN_METADATA line in your plugin header ?
-
wrote on 1 Jul 2013, 15:55 last edited by
[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
-
wrote on 1 Jul 2013, 15:56 last edited by
[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 >= 0x050000public:
MyPlugin(QObject parent = 0);
QPushButton someObject(QWidget *parent=0);
};@ -
wrote on 2 Jul 2013, 08:31 last edited by
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...
-
wrote on 2 Jul 2013, 09:19 last edited by
[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. -
wrote on 9 Jul 2013, 00:16 last edited by
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
-
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.
-
wrote on 6 Aug 2013, 01:09 last edited by
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.
-
wrote on 6 Aug 2013, 13:47 last edited by
Thanks a lot guys, it works fine.
I wonder does this info mentioned in Qt docs?
-
You're welcome !
From the ones I searched through, no, this call for an update to the documentation
-
wrote on 6 Aug 2013, 14:15 last edited by
[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.
-
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 ?
-
wrote on 6 Aug 2013, 15:26 last edited by
bq. Can you point me to your wiki entries
I didn't write any entries I just suggested to add them by you.
-
For the quick road, I have added a doc note
-
wrote on 6 Aug 2013, 21:15 last edited by
[quote author="SGaist" date="1375821248"]For the quick road, I have added a doc note[/quote]
Thanks a lot :)
-
wrote on 18 Feb 2014, 21:09 last edited by
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.