Qt插件接口相关的两个重要宏

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

你可能感兴趣的:(Qt)