C++ 是否可以将自定义类添加到QStandardItem?

C++ 是否可以将自定义类添加到QStandardItem?,c++,qt,C++,Qt,我想知道是否可以将自定义类添加到QStandardItem。我目前正在做类似的事情 QStandardItem* item_text= new QStandardItem(); item_text->setText(msg.c_str()); 现在假设我有一个类foo,它不是从QVariant继承的,可以将它存储在QStandardItem中吗?如果是这样的话,我该如何存储它,然后检索它呢???我相信你要找的是 QStandardItem::setData ( const QV

我想知道是否可以将自定义类添加到QStandardItem。我目前正在做类似的事情

QStandardItem* item_text=  new QStandardItem();
item_text->setText(msg.c_str());

现在假设我有一个类
foo
,它不是从QVariant继承的,可以将它存储在QStandardItem中吗?如果是这样的话,我该如何存储它,然后检索它呢???

我相信你要找的是

    QStandardItem::setData ( const QVariant & value, int role = Qt::UserRole + 1 )
您可以使用以下类似的方法:

   QStandardItem item;
   item.setData(QVariant(MyClass),Qt::UserRole);
因此,我认为您需要做的是将自定义类类型转换为QVariant(如上所示),并设置相应的角色,就像我使用UserRole一样。 然后,在提取数据时,可以将其类型转换回自定义类

您还可以通过增加userrole来将其保存在userrole中,如下所示:

  item.setData(QVariant(MyClass),Qt::UserRole + 1000);
  item.setData(QVariant(MyNewClass),Qt::UserRole + 1001);
等等。 希望有帮助。:)