2017-02-21 38 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 в противном случае хорошо работает для вас, то это может быть больше работы, чем просто придерживаться того, что вы уже делаете.

Другая возможность, о которой я могу думать, - использовать существующие QStandardItemModel и QSortFilterProxyModel. В базовой модели вы можете хранить свои метаданные в виде дополнительных столбцов, а затем в прокси, просто убедитесь, что эти столбцы всегда скрыты от представления.

+0

Спасибо! Второе решение - это то, что у меня есть. Но хорошо осознавать «чистый» способ. –