0

我正在使用委托在 tableView 中将一个单元格的背景设置为蓝色。代码如下:

void Delegate::setModelData(some parameters) 
{
     QStandardItem *item = model->item(modelIndex);
     item->setBackground(QBrush(Qt::blue));
     item->setText("hello")
}
  1. 在这个序列中,setBackground在setText之前,文本不会显示。如果我改变序列,文本可以显示。
  2. 如果我以这种方式更改背景,表格的网格线就会消失,如下所示:

在此处输入图像描述

虽然不是很清楚(蓝色背景),但您仍然可以在最后一列中看到,没有网格线来分隔单元格。

您能否告诉我这两个问题有什么问题,以及如何解决它们?非常感谢你。

4

1 回答 1

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

于 2017-12-11T12:14:42.457 回答