如何通过自定义QAbstractItemModel在QTableView中显示图标?

时间:2012-05-30 17:04:29

标签: c++ qt model

我正在构建一个自定义的QAbstractItemModel模型。

第一列包含图标,第二列包含文本。

这是数据方法的代码:

QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const
{
    if(role != Qt::DisplayRole )
        return QVariant();

    int col = index.column();
    if (col == 0)
    {
        return iconProvider->icon(QFileIconProvider::Folder);
    }
    else if (col == 1)
    {
        return "TEXT";
    }
}

但是我得到的表视图中的所有内容都只是第二列中的文本。第一列没有文件夹图标。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:5)

Qt::DisplayRole仅适用于文字。添加:

if ( role == Qt::DecorationRole ) {
    return iconProvider->icon(QFileIconProvider::Folder);
}