QStandardItemModel
サブクラス化して独自のアイテム タイプを使用するにはどうすればよいですか (たとえば、 の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 に答える