2

如何子类化QStandardItemModel以使用我自己的 Item 类型(例如MyItem,而不是QStandardItem)?我的意思是我知道我必须创建一个类并继承QStandardItemModel,但接下来呢?我如何让它无处不MyItem在?是的,MyItem继承后QStandardItem.

4

2 回答 2

3

您不需要子类模型,只需项目类。你只需要这样:

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);
于 2013-07-09T22:36:33.623 回答
1

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

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

于 2013-06-11T18:03:28.927 回答