QTableview行元数据

时间:2017-02-21 15:36:19

标签: qt row metadata qtableview user-roles

在QTableView中,我正在尝试为每一行添加一些元数据。一个明显的解决方案是在最后一列使用Qt::UserRole。这样的事情。

QStandardItemModel* model = new QStandardItemModel();
QStandardItem* item = new QStandardItem();
item->setData("Hello", Qt::DisplayRole);
item->setData(rowMetadata, Qt::UserRole);
model->setItem(ROW_0, COL_0, item);
// Getting the metadata as follows
model->data(model->index(ROW_0, COL_0), Qt::UserRole);
但是,有些事情感觉不对劲。 更直观的解决方案?

1 个答案:

答案 0 :(得分:0)

一种可能性是继承QStandardItemModel并构建自己的内部模型,然后您可以以任何您喜欢的方式存储元数据。如果QStandardItemModel对你来说效果不错,那么这可能比仅仅坚持你已经做的更多工作。

我能想到的另一种可能性是使用您现有的QSortFilterProxyModel和{{1}}。在基本模型中,您可以将元数据存储为额外列,然后在代理中,只需确保始终从视图中隐藏这些列。