2013-05-02 58 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