2

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