#include "ColorDelegate.h" void ColorDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { painter->save(); // 获取文本 QString text = index.data().toString(); // 分割文本为两部分 QStringList parts = text.split(" "); if (parts.size() < 2) { QStyledItemDelegate::paint(painter, option, index); painter->restore(); return; } // 设置第一部分的颜色 painter->setPen(Qt::red); painter->drawText(option.rect, Qt::AlignLeft, parts[0]); // 计算第一部分文本的宽度 int firstPartWidth = painter->fontMetrics().width(parts[0]); // 设置第二部分的颜色 painter->setPen(Qt::green); painter->drawText(option.rect.adjusted(firstPartWidth, 0, 0, 0), Qt::AlignRight, parts[1]); painter->restore(); }