2017-02-21 91 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

謝謝!第二個解決方案就是我所擁有的。但意識到「乾淨」的方式是很好的。 –