传递Q_DECLARE_METATYPE作为指针

时间:2019-05-25 03:39:56

标签: qt qt5

这是我的Container类。我在Q_DECLARE_METATYPE中声明。

class Container
  {
    private:
    std::string stdstrContainerName;
    std::string stdstrPluginType;
    Geometry Geom;

  public:
    Container();
    Container(std::string, std::string,  const Geometry& geometry );
    Container(const  Container& obj);
 };

Q_DECLARE_METATYPE(Container) 

此类是TreeItem中的数据成员。由于这是沉重的对象,因此我想将其作为指针而不是值传递。

class TreeItem
 {

    Container* data();

  private:
      QList<TreeItem*> childItems;
      Container itemData;
      TreeItem* parentItem;
  };

 Container* TreeItem::data()
 {
     return &itemData;
 }

我收到未注册Type的编译器错误,请使用Q_DECLARE_METATYPE宏将其告知Qt的元对象系统

1 个答案:

答案 0 :(得分:2)

如果它是您要传递的指针,则需要告知MOC:

Emulate a focused page