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