12345678910111213141516171819202122232425262728 |
- #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();
- }
|