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
。在基本模型中,您可以将元数据存储为额外的列,然后在代理中,只需确保这些列始终在视图中隐藏。
在 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
。在基本模型中,您可以将元数据存储为额外的列,然后在代理中,只需确保这些列始终在视图中隐藏。