Qt 插件机制以及插件中几个重要的宏
来源:互联网 发布:郑州公交线路查询软件 编辑:程序博客网 时间:2024/06/06 01:56
简述:
Qt 插件类必须继承自 QObject 类和插件接口类。若没有 Q_DECLARE_INTERFACE 和 Q_INTERFACES 这两个宏,就无法对从插件中获取的实例指针进行 qobject_cast 映射。然后,可以通过 QPluginLoader 类调用插件类。
1、接口类
首先,定义一个纯虚类作为插件接口类。
Q_DECLARE_INTERFACE 宏告诉Qt 这个纯虚类是一个插件接口类。Q_DECLARE_INTERFACE 宏是与qobject_cast相关的。
第一个参数是接口类名,第二个参数是插件标志符,标识符是大小写敏感的且必须是唯一。
2、实现类
接着,是接口类的具体实现,即实现类。实现类必须继承自 QObject 和插件接口类(也可以在插件接口类的时候就继承QObject)。
每一个插件类都有一个独立的 IID 值。
① Q_PLUGIN_METADATA : Q_PLUGIN_METADATA 宏用于描述插件元数据,第一个参数 IID 是必须的,同插件标识符一样,而第二个参数FILE是可选的,指定一个本地的 json 文件,该文件可以描述插件的相关数据信息。
② Q_INTERFACES :若一个头文件或源文件中用到了 Q_INTERFACES 宏,那么在调用这个宏之前,必须存在一个 Q_DECLARE_INTERFACE 宏声明相应的接口(或者包含一个用 Q_DECLARE_INTERFACE 宏声明了该接口的头文件),MOC会检查这一点,因为它在为 Q_INTERFACES 宏生成代码时要用到Q_DECLARE_INTERFACE 宏的 IID 参数。
Q_INTERFACES宏也是与qobject_cast相关,没有 Q_DECLARE_INTERFACE 和 Q_INTERFACES 这两个宏,就无法对从插件中获取的实例指针进行qobject_cast映射
③ Q_DECL_OVERRIDE :Q_DECL_OVERRIDE 宏来声明这是一个对虚函数进行定义的方法,编译器会验证该方法名是否是父类中所有的,如果没有则报错(这个类似 Java里的 @Override 注解)。
3、调用
最后,通过 QPluginLoader 类调用插件类。
- Qt 插件机制以及插件中几个重要的宏
- Qt5的插件机制(6)--开发Qt插件时几个重要的宏
- 几个重要的Eclipse插件!
- 几个重要的jquery插件
- Qt的插件机制
- Qt的插件机制
- Qt的插件机制
- Qt的插件机制
- Qt插件机制的学习
- Qt插件机制的学习
- Qt插件机制的学习
- QT插件机制
- QT插件机制
- Qt的插件机制(转)
- jquery的插件机制以及应用
- Xcode 中几个比较不错的插件
- Android studio中几个插件的使用
- iOS开发中常用的几个插件
- 读取串口数据
- kotlin学习day2:类
- Linux kernel 中的的等待队列(阻塞式)
- 汇编代码在vs上的使用方法
- 卷积神经网络技术及发展
- Qt 插件机制以及插件中几个重要的宏
- 文章标题
- oracle毫秒转成年月日
- 葡萄城荣膺”2017中国智慧服务体验十强品牌”
- 数据库事务的四大特性以及事务的隔离级别
- Spring学习(二)
- 第36章 s域分析(下)
- 六一儿童节
- 数据结构 跳表SkipList的原理和代码实现