Добрый день, извините за паузу - праздники )))
Действительно, дело было в ролях. Было так:
QVariant message_model::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole && role != Qt::DecorationRole)
return QVariant();
message_model_item *item = getItem(index);
return item->data(index.column());
}
Т.е. для колонки, где должна быть только иконка независимо от роли я отдавал данные.
Теперь так:
QVariant message_model::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole && role != Qt::DecorationRole)
return QVariant();
int col = index.column();
if(role == Qt::DisplayRole && (col == 1 || col == 2))
return QVariant();
else if(role == Qt::DecorationRole && (col == 0 || col == 3))
return QVariant();
message_model_item *item = getItem(index);
return item->data(col);
}
Для текстовых колонок отдаю данные только для роли DisplayRole, а для колонок с иконками - только для DecorationRole
Спасибо
Константин, направил в нужном направлении
Модераторам: тему можно закрывать или удалять - на ваше усмотрение )