zl程序教程

您现在的位置是:首页 >  其他

当前栏目

第8篇 基础(八)Q_OBJECT&Q_INTERFACES&Q_PLUGIN_METADATA&Q_UNUSED&Q_DECLARE_INTERFACE

amp基础 object plugin interface metadata Declare unused
2023-09-14 09:05:33 时间

1、Qt 类中Q_OBJECT的作用

(1)QObject 是所有Qt对象的基类。
(2)QObject 是Qt模块的核心。它的最主要特征是关于对象间无缝通信的机制:信号与槽。使用connect()建立信号到槽的连接,使用disconnect()销毁连接,使用blockSignals()暂时阻塞信号以避免无限通知循环,使用connectNotify()和disconnectNotify()追踪连接。
(3)宏Q_OBJECT是任何实现信号、槽或属性的强制性要求。不管是否需要实现这些机制,都要求使用这个宏。否则会引发一些函数的奇怪行为。
(4)QObject继承要写在第一个,不然Q_OBJECT就不起作用,所以将继承放在第一位

2、开发Qt插件时几个重要的宏

Q_INTERFACES(…)
这个宏告诉 Qt 类实现了哪些接口。 这在实现插件时使用。
Q_PLUGIN_METADATA(…)
此宏用于声明作为实例化此对象的插件的一部分的元数据。宏需要声明通过对象实现的接口的 IID,并引用包含插件元数据的文件。Qt 插件的源代码中应该只出现一次这个宏。

3、Q_UNUSED的使用

在构建比较大型的工程的时候,若继承,重构虚函数,写数据model等等比较多的时候,会给出大量的 “未引用的形参” ,“warning: unused parameter ” 的告警。这种告警多了会影响看出真正有问题的地方。
Q_UNUSED() 没有实质性的作用,用来避免编译器警告

4、Q_DECLARE_INTERFACE

这个宏通常在被放到一个类被定后的位置。详细内容查看 Plug & pain。
如果你想把Q_DECLARE_INTERFACE用于命名空间的接口类,要确保Q_DECLARE_INTERACE不在命名空间中。