Q_INTERFACES(...)
在实现插件时使用:用于声明该类所实现的接口,且这些接口必须使用了Q_DECLARE_INTERFACE进行了声明。
Example:
class BasicToolsPlugin : public QObject,
public BrushInterface,
public ShapeInterface,
public FilterInterface
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface" FILE "basictools.json")
Q_INTERFACES(BrushInterface ShapeInterface FilterInterface)
public:
...
};
Q_DECLARE_INTERFACE(ClassName, Identifier)
在申明插件接口时使用:用于给插件接口类(ClassName)绑定一个唯一标识符(Identifier)。
For example:
#define BrushInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface"
Q_DECLARE_INTERFACE(BrushInterface, BrushInterface_iid)
如果要为声明在名空间中的接口类绑定唯一标识符,则需要把Q_DECLARE_INTERFACE写在名空间之外。
For example:
namespace Foo
{
struct MyInterface { ... };
}
Q_DECLARE_INTERFACE(Foo::MyInterface, "org.examples.MyInterface")
原文:Qt官方Assistant