QTableview行元数据
问题描述:
在QTableView中,我试图为每行添加一些元数据。一个明显的解决方案是在最后一列使用Qt::UserRole
。像这样的东西。QTableview行元数据
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
。在基础模型中,您可以将元数据存储为额外的列,然后在代理中确保这些列始终隐藏在视图中。
谢谢!第二个解决方案就是我所拥有的。但意识到“干净”的方式是很好的。 –