6
我想顯示一個圖像從QAbstractTableModel
。我試過返回一個QPixmap
作爲QVariant
的data()
,但它只產生空單元格,當我預計第二列中的每個單元格都有一個20x20的黑色正方形。顯示QAbstractTableModel的圖像
這是目前我的代碼:
QVariant MySqlTableModel::data(const QModelIndex &idx, int role = Qt::DisplayRole) const
{
if (role == Qt::DisplayRole && idx.column() == 1) {
QPixmap pixmap(20,20);
QColor black(0,0,0);
pixmap.fill(black);
return pixmap;
}
return QSqlTableModel::data(idx, role);
}
是的,我認爲它可以與代表完成,但這似乎是矯枉過正。我想沒有更簡單的方法?另外,如果我只想將代表應用於特定列,是否有辦法做到這一點?目前我已經使用setItemDelegate將委託設置爲整個TableView。然後,我必須在模型的data()函數以及委託的paint()函數中進行列檢查(查看顯示圖像的列) - 這看起來像代碼重複...在那裏更好的方法? –
更簡單的方法是在不使用委託的情況下使用'Qt :: DecorationRole'。但是你可以用'setItemDelegateForColumn'設置一個列的委託。 – alexisdm
啊,我怎麼會錯過setItemDelegateForColumn?謝謝! –