ColorDelegate.cpp 864 B

12345678910111213141516171819202122232425262728
  1. #include "ColorDelegate.h"
  2. void ColorDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
  3. {
  4. painter->save();
  5. // 获取文本
  6. QString text = index.data().toString();
  7. // 分割文本为两部分
  8. QStringList parts = text.split(" ");
  9. if (parts.size() < 2) {
  10. QStyledItemDelegate::paint(painter, option, index);
  11. painter->restore();
  12. return;
  13. }
  14. // 设置第一部分的颜色
  15. painter->setPen(Qt::red);
  16. painter->drawText(option.rect, Qt::AlignLeft, parts[0]);
  17. // 计算第一部分文本的宽度
  18. int firstPartWidth = painter->fontMetrics().width(parts[0]);
  19. // 设置第二部分的颜色
  20. painter->setPen(Qt::green);
  21. painter->drawText(option.rect.adjusted(firstPartWidth, 0, 0, 0), Qt::AlignRight, parts[1]);
  22. painter->restore();
  23. }