Estoy tratando de mostrar una imagen de QAbstractTableModel
. Traté de devolver un QPixmap
como QVariant
de data()
, pero solo produce celdas vacías, cuando esperaba que cada celda de la segunda columna tuviera un cuadrado negro de 20x20.Mostrar una imagen de un QAbstractTableModel
Este es mi código actualmente:
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í, pensé que podría hacerse con un delegado, pero eso parecía exagerado. ¿Supongo que no hay una manera más fácil? Además, si solo quiero aplicar el delegado a una columna específica, ¿hay alguna manera de hacerlo? Actualmente he configurado el delegado para toda TableView utilizando setItemDelegate. Luego tengo que hacer la comprobación de columna (para ver en qué columna se muestran las imágenes) en la función de datos() del modelo, así como la función paint() del delegado: esto parece una duplicación de código ... ¿hay ¿una mejor manera? –
La manera más fácil es usar 'Qt :: DecorationRole' sin usar un delegado. Pero puede establecer un delegado para una columna con 'setItemDelegateForColumn'. – alexisdm
Ah, ¿cómo podría perderse setItemDelegateForColumn? ¡Gracias! –