To save your element in QStandardItem, you need to make sure that you register your type with QMetaType. For example, you might have this definition:
class MyType { public: MyType() : m_data(0) {} int someMethod() const { return m_data; } private: int m_data; }; Q_DECLARE_METATYPE(MyType*);
Then you can save it in QVariant as follows:
MyType *object = new MyType; QVariant variant; variant.setValue(object);
Given a properly registered metatype for your type, you can now do something similar with QStandardItems:
MyType *object = new MyType; QStandardItemModel model; QStandardItem *parentItem = model.invisibleRootItem(); QStandardItem *item = new QStandardItem; item->setData(QVariant::fromValue(myType));
And then remove it:
void MyOtherClass::handleTreeViewSelectionChanged(const QModelIndex &i) { MyType* o = i.data(Qt::UserRole + 1).value<MyType*>();
source share