Я хочу отобразить части текста QTableWidgetItem
в разных цветах (часть должна отображаться красным цветом).
Я обнаружил, что используется QStyledItemDelegate
, переопределение paint
Функция и отображение QTextDocument
, который использует текст элемента и добавил HTML.
Это включает 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
?