QTableview 行元数据

QTableview row metadata

在 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);

虽然感觉有些不对劲。 还有更直观的解决方案吗?

一种可能性是继承 QAbstractItemModel 并构建您自己的内部模型,然后您可以按照自己喜欢的方式存储元数据。如果 QStandardItemModel 在其他方面对您来说效果很好,那么这可能比坚持您已经在做的事情更有效。

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