我正在制作一个表格控件,除了显示其模型中的DisplayRole之外,还要显示一些附加的文本数据。在所有其他方面,文本和单元格显示应该是相同的。我遇到困难的是正确显示高亮单元格。
我目前正在使用以下代码:
然而,结果看起来像这样:文字颜色是错误的,单元格周围没有虚线,当控件失去焦点时,单元格仍然是蓝色的,而不像默认单元格一样变成浅灰色。应该如何改变绘图代码以解决这些问题?
我目前正在使用以下代码:
void MatchDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (option.state & QStyle::State_Selected)
painter->fillRect(option.rect, option.palette.highlight());
painter->save();
QString str = qvariant_cast<QString>(index.data())+ "\n";
str += QString::number(qvariant_cast<float>(index.data(Qt::UserRole)));
if (option.state & QStyle::State_Selected)
painter->setBrush(option.palette.highlightedText());
else
painter->setBrush(qvariant_cast<QBrush>(index.data(Qt::ForegroundRole)));
painter->drawText(option.rect, qvariant_cast<int>(index.data(Qt::TextAlignmentRole)), str);
painter->restore();
}
然而,结果看起来像这样:文字颜色是错误的,单元格周围没有虚线,当控件失去焦点时,单元格仍然是蓝色的,而不像默认单元格一样变成浅灰色。应该如何改变绘图代码以解决这些问题?