Qt QListView每列有不同的代表

时间:2013-05-02 14:06:41

标签: qt delegates

我现在还不清楚代表制度。

我有一个QListView正确显示我的自定义模型。

我的模型由以下列组成:

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

  • 填充列的项目文本
  • 第4,5,6和7列是自定义类的QVariant。这些列的项目已填充QAbstractItem::setData(QVariant::fromValue(MyCustomClass());

我需要从QListView中显示第1,2和3列的文本,并在第4,5,6和7列显示通过MyCustomClass方法获得的自定义QString。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

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

你有自定义型号吗?如果您从自定义数据中删除所有文本,则可以更轻松地重新实现QAbstractItemModel::data(const QModelIndex& index, int role) const,查询哪个列index,如果是您的自定义数据列,则返回自定义数据列的显示角色数据文本;否则只需调用父实现。