创建:
新建Lib工程
新建后,将下面的文件全部删除。只留一个pro文件。
此时新增一个.h文件。Interface.h。
因为我们是要做插件,根据QT的插件机制。需要一个类位接口类,所以该类里面必须有纯虚函数。IIDS为每个插件的“类似于标识符”。
Q_DECLARE_INTERFACE(name,QString).将一个字符串与一个接口类绑定,作为标识。
此时,我们的接口类就定义完毕了。
下面来定义一个插件。
为工程新增一个C++工程,包含.h和.cpp。作者新增的类为MyFirstWidgetPlugins
还是先看.h文件里的定义.
如果你的插件不想有界面。那么就继承QObject。然后还必须要继承我们之前写的接口类。 重写纯虚函数。并添加
Q_INTERFACES(PluginsInterface) //:PluginsInterface为我们的接口类的名称
Q_PLUGIN_METADATA(IID IIDS FILE "widgetplugin.json")//这个json文件不能不存在。内容为空也可。
插件机制中,最主要的用到的就是这三个宏。具体这三个宏做了什么,参考这位老哥分析
https://blog.csdn.net/wangw8507/article/details/119278632
Q_DECLARE_INTERFACE
Q_INTERFACES
Q_PLUGIN_METADATA
我们重写纯虚函数后。用代码设置界面大小,添加控件后,
tips:如果是带界面的插件,那么我们设计接口类的时候,必须要有个接口去返回界面的指针,这样在工程里才能使用到插件的界面。不带界面的插件 则可以忽略。
此时一个简单的插件工程就做好了。执行构建,会得到动态库。
调用:
将刚刚的插件的接口头文件,及生成的库复制到工程下。添加头文件。添加库,即可。关于待用的代码,如下。
插件项目和调用项目工程文件链接
https://download.csdn.net/download/qq_39501474/21059801?spm=1001.2014.3001.5503
将plugins工程执行构建,然后将生成.dll动态库
将此库与接口头文件,放到testdiaoyong工程源文件目录下:
然后编译运行TestDiaoyong工程