如何将QStandardItemModel子类化为使用我自己的Item类型?

时间:2013-06-11 17:53:14

标签: c++ qt model subclass

如何将QStandardItemModel子类化为使用我自己的项类型(例如MyItem而不是QStandardItem)?我的意思是我知道我必须创建一个类并继承QStandardItemModel但接下来会是什么?如何在任何地方使用MyItem ?是的,MyItemQStandardItem之后继承。

2 个答案:

答案 0 :(得分:1)

我认为这是不可能的。您可以将QAbstractItemModel子类化以实现使用您的项类的模型。

您还可以使用默认的QStandardItemModel,并使用QStandardItem::setData将其他对象添加到项目中。由于它接受QVariant,你可以在其中加入任何值,事件QSharedPointer(你需要注册适当的元类型)。

答案 1 :(得分:1)

您不需要子类化模型,只需要项目类。所有你需要的是:

class YourItem : public QStandardItem
{
// ...
public:
       virtual QStandardItem *clone() const;
};

QStandardItem *YourItem::clone() const
{
    return new YourItem(/*your constructor parameters to copy data if needed*/);
}

安装型号时:

model->setItemPrototype(new MyItem());
ui->listView->setModel(model);