委托中的QStandardItem setBackground使得网格在tableView中消失

时间:2017-12-11 04:57:41

标签: c++ qt qtableview qstyleditemdelegate

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

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

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

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

1 个答案:

答案 0 :(得分: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