2013-05-02 27 views
0

到目前爲止,Delegate系統對我來說還不清楚。Qt QListView每列有不同的代表

我有一個QListView正確顯示我的自定義模型。

我的模型由以下各列組成:

  • 列1,2和3是一個文本列使用QAbstractItem::setText();

  • 第4列,5,6,該列的項目的文本被填充和7是自定義類的QVariant。這些柱都填充有QAbstractItem::setData(QVariant::fromValue(MyCustomClass());

我需要從而QListView是它在柱1,2和3顯示的文本,並顯示由MyCustomClass的方法上clumns 4獲得一個定製的QString物品, 5,6和7.

我該如何做到這一點?

回答

2

使用QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelegate* delegate),docs

你有定製的模型嗎?如果您要從您的自定義數據中提取文本,那麼重新實現QAbstractItemModel::data(const QModelIndex& index, int role) const,查詢哪一列index是,並且如果它是您的自定義數據列返回具有自定義數據文本的顯示角色將更容易;否則只需調用父實現。

+0

重新實現數據方法的好主意。謝謝!! – 2013-05-02 14:37:21