![](/img/trans.png)
[英]How to map the QListWidget / QStandardItemModel item to my logic?
[英]How to subclass QStandardItemModel to use my own Item type?
如何將QStandardItemModel
子類化以使用自己的Item類型(例如,用MyItem
代替QStandardItem
)? 我的意思是我知道我必須創建一個類並繼承QStandardItemModel
但是接下來呢? 如何使其在所有地方都使用MyItem
? 是的, MyItem
在QStandardItem
之后繼承。
我認為這是不可能的。 您可以將QAbstractItemModel子類化以實現使用您的項目類的模型。
您也可以使用默認的QStandardItemModel,並使用QStandardItem::setData
將其他對象添加到項目中。 由於它接受QVariant,因此您可以在其中添加任何值,事件QSharedPointer(您需要注冊適當的元類型)。
您不需要子類化模型,只需子類。 您需要的是:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.