Sto tentando di visualizzare un'immagine da QAbstractTableModel
. Ho provato a restituire uno QPixmap
come QVariant
di data()
, ma produce solo celle vuote, quando mi aspetto che ogni cella nella seconda colonna abbia un quadrato nero 20x20.Visualizzazione di un'immagine da un QAbstractTableModel
Questo è il mio codice attualmente:
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);
}
Sì, ho pensato che si potesse fare con un delegato, ma sembrava eccessivo. Immagino che non ci sia un modo più semplice? Inoltre, se voglio solo applicare il delegato a una colonna specifica, c'è un modo per farlo? Attualmente ho impostato il delegato sull'intero TableView utilizzando setItemDelegate. Quindi devo fare il controllo della colonna (per vedere in quale colonna vengono visualizzate le immagini) nella funzione data() del modello, nonché la funzione paint() del delegato: sembra una duplicazione del codice ... è lì un modo migliore? –
Il modo più semplice è usare 'Qt :: DecorationRole' senza usare un delegato. Ma puoi impostare un delegato per una colonna con 'setItemDelegateForColumn'. – alexisdm
Ah, come potrei perdere setItemDelegateForColumn? Grazie! –