5

QListViewカスタム を使用した非常に単純な例を作成しましたQAbstractListModelQListViewが表示されますが、空です。

私は何を間違っていますか?

コード:

#include <QListView>
#include <QAbstractListModel>
#include <QApplication>

class DataModel: public QAbstractListModel
{
public:
    DataModel() : QAbstractListModel() {}
    int rowCount( const QModelIndex & parent = QModelIndex() ) const { return 2; }
    QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const
    {
        return "a";
    }
};

int main( int argc, char **argv)
{
    QApplication app(argc, argv, true);
    QListView *lv = new QListView();
    DataModel d;
    lv->setModel( &d ); 
    lv->show();
    app.setMainWidget(lv);
    app.exec();
}

ありがとう!

前のコードの修正は、モデルの親を次のように設定することQListViewです。

DataModel d(lv);

モデルがビューへの参照を持つ必要がある場合、モデル/ビューの独立性はどこにあるのでしょうか?

このモデルを 2 つの異なるビューで使用したい場合はどうすればよいですか?

4

1 に答える 1

12

メソッド データは、role = Qt::DisplayRole の場合にのみ「a」を返す必要があります。それ以外の場合は、すべてのロールに対して "a" を返します。

したがって、簡単なテストを追加すると機能します。

  QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const
{
    if ( role == Qt::DisplayRole ) {
      return "a";
    }
    return QVariant();
}
于 2013-02-27T09:05:35.877 に答える