Сохранить QList<QSharedPointer <MyClass >> как QVariant
У меня проблема с сохранением QList QSharedPointer
Консольный вывод:
kernel \ qvariant.cpp (2150): QVariant:: save: невозможно сохранить тип <'QList
>' (идентификатор типа: 1035). global \ qglobal.cpp (3052): сбой ASSERT в QVariant::save: "Недопустимый тип для сохранения", файл ядра \qvariant.cpp, строка 2151
Абстрактный код:
SampleClass::SampleClass()
{
qRegisterMetaType<QSharedPointer<MyClass> >("QSharedPointer<MyClass>");
qRegisterMetaType<QList<QSharedPointer<MyClass>>>("QList<QSharedPointer<MyClass>>");
QList<QSharedPointer<MyClass> > myClassList;
myClassList.append(...); // Just to make clear that the list is filled with QSharedPointer<MyClass>
QVariant varMyClass;
varMyClass.setValue(myClassList); //QVariant::fromValue(myClassList)
DerivedQGraphicsItem *newCustomItem = new DerivedQGraphicsItem;
newCustomItem->setData(Qt::UserRole, varMyClass);
}
Это работает нормально, но когда я добавляю newCustomItem в QGraphicsScene и щелкаю по нему, появляется ошибка выше. Похоже, что операторы потока должны быть реализованы (QDataStream &operator<< и QDataStream &operator>>) для QSharedPointer