如何子类化QStandardItemModel
以使用我自己的 Item 类型(例如MyItem
,而不是QStandardItem
)?我的意思是我知道我必须创建一个类并继承QStandardItemModel
,但接下来呢?我如何让它无处不MyItem
在?是的,MyItem
继承后QStandardItem
.
问问题
4331 次
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 回答