Приветствую!
В общем есть некий указатель на класс (к примеру, ProductItem), нужно передать его с помощью QVariant
передаю так:
ProductItem * item = new ProductItem(this);
QVariant MyClass::getItem()
{
return qVariantFromValue(static_cast<WBaseItem*>(item));
}
это упрощённо, разумеется класс после выхода из функции не разрушается и гарантирую, что он существует.
дальше в нужном месте уже кастую:
WBaseItem * item = qvariant_cast<WBaseItem*>(getItem());
Так вот, item всегда 0, хотя если вызвать
qDebug()<<getItem();
будет явно указано
QVariant(WBaseItem*, ProductItem(0x1665e70) )
ProductItem - наследуется от WBaseItem. Если передавать не через QVariant, то через dynamic_cast всё проходит нормально.
Подскажите, пожалуйста, как правильно передать?
P.S. Про Q_DECLARE_METATYPE(WBaseItem*) читал, сделал, не пашет.
Крайне странно то, что в некоторых других случаях работает нормально.
В них другие классы то же наследуются от WBaseItem но приводятся к нему нормально, а в текущем не хочет, хотя сам класс, который наследуется простой... чертовщина какая-то.