我想以QTableWidgetItem
不同的颜色显示 a 的部分文本(其中一部分应该显示为红色)。
我发现使用 a QStyledItemDelegate
,重新实现paint
函数并显示QTextDocument
使用项目文本并添加 HTML 的 a 。
这将为文本启用 HTML:
void DifferencesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
painter->save();
QTextDocument document;
document.setHtml(index.data().toString());
document.setPageSize(option.rect.size());
QAbstractTextDocumentLayout::PaintContext context;
painter->translate(option.rect.x(), option.rect.y());
document.documentLayout()->draw(painter, context);
painter->restore();
}
但是,与“正常”显示相比,结果有一些像素偏移(很可能以一致的方式修复),但我想知道是否有更简单的方法。我根本不需要 HTML,我只想更改部分文本的颜色。
那么是否可以绘制项目的文本(逐个字母)并为每个字母设置颜色而无需使用QTextDocument
?