Только QVariant
s, которые могут быть преобразованы в строку, могут быть возвращены для роли Qt::DisplayRole
со стандартным делегатом.
Вы можете показать изображение, вернув его для роли Qt::DecorationRole
QVariant MySqlTableModel::data(const QModelIndex &idx, int role = Qt::DisplayRole) const
{
if (idx.column() == 1) {
if (role == Qt::DecorationRole) {
QPixmap pixmap(20,20);
QColor black(0,0,0);
pixmap.fill(black);
return pixmap;
} else if (role == Qt::DisplayRole) {
// For Qt::DisplayRole return an empty string, otherwise
// you will have *both* text and image displayed.
return "";
}
}
return QSqlTableModel::data(idx, role);
}
Или напишите своего собственного делегата, чтобы сделать картину самостоятельно.См. документацию QStyledItemDelegate для получения более подробной информации.