2017-02-21 87 views
0

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

虽然有些东西感觉不对。 更直观的解决方案?

回答

0

一种可能性是将子类QAbstractItemModel并建立自己的内部模型,然后您可以以任何喜欢的方式存储元数据。如果QStandardItemModel否则适合你,那么这可能比仅仅坚持你已经做的更多的工作。

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

+0

谢谢!第二个解决方案就是我所拥有的。但意识到“干净”的方式是很好的。 –