我想知道是否有可能向QStandardItem添加自定义类。我目前正在做这样的事情

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


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

最佳答案

我相信你正在寻找的是

    QStandardItem::setData ( const QVariant & value, int role = Qt::UserRole + 1 )


您可以使用像这样的东西:

   QStandardItem item;
   item.setData(QVariant(MyClass),Qt::UserRole);


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

您也可以通过增加它来保存在userrole中,例如:

  item.setData(QVariant(MyClass),Qt::UserRole + 1000);
  item.setData(QVariant(MyNewClass),Qt::UserRole + 1001);


等等。
  希望能帮助到你。 :)

关于c++ - 是否可以向QStandardItem添加自定义类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21298964/

10-11 00:55