Передача Q_DECLARE_METATYPE в качестве указателя - PullRequest
1 голос
/ 25 мая 2019

Это мой контейнерный класс. Который я объявляю в 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;
 }

Я получаю ошибку компилятора, что тип не зарегистрирован, пожалуйста, используйте макрос Q_DECLARE_METATYPE, чтобы сделать его известным мета-объектной системе Qt

1 Ответ

2 голосов
/ 25 мая 2019

Если вы хотите передать указатель, вам нужно сообщить MOC об этом:

Q_DECLARE_METATYPE(Container*)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...