QStandardItem setBackground в делегате делает исчезновение сетки в tableView

Я использую делегата, чтобы установить синий фон ячейки в tableView. Код выглядит следующим образом:

void Delegate::setModelData(some parameters)
{
QStandardItem *item = model->item(modelIndex);
item->setBackground(QBrush(Qt::blue));
item->setText("hello")
}
  1. В этой последовательности setBackground находится перед setText, текст не будет отображаться. Если я изменяю последовательность, текст может отображаться.
  2. Если я изменю фон таким образом, линия сетки таблицы исчезнет, ​​как показано ниже:

введите описание изображения здесь

Хотя и не очень ясно (синий фон), вы все еще можете видеть в последнем столбце, нет линии сетки, чтобы отделить ячейку.

Не могли бы вы сказать мне, что не так с этими двумя проблемами, и как их решить? Спасибо, очень впереди.

0

Решение

setModelData (), чтобы место для сохранения данных формировало ваш пользовательский редактор для модели. Вы должны настроить рисование ячейки в виртуальной функции paint ():

void Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
// Your manipulation with QPainter and QStyleOptionViewItem
QStyledItemDelegate::paint(painter, &option, &index);
}

Вы должны изменить QStyleOptionViewItem :: backgroundBrush

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]