#include "MyItemDraw.h"#include "QIcon"MyItemDraw::MyItemDraw(QObject *parent): QStyledItemDelegate(parent),iconMan(":/SocketObject/Resources/man.ico"),iconWoman(":/SocketObject/Resources/woman.ico"),iconFile(":/SocketObject/Resources/file3.ico"){}MyItemDraw::~MyItemDraw(){}QSize MyItemDraw::sizeHint( const QStyleOptionViewItem & option, const QModelIndex & index )const{QSize size=QStyledItemDelegate::sizeHint(option,index);size.setHeight(40);return size;}void MyItemDraw::paint( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index )const{//安排index的布局//QStyledItemDelegate::paint(painter, option, index);QRect rect = option.rect; // 目标矩形rect.adjust(2,2,-2,-2); // 缩小一圈,留出空白间隔// 取得该项对应的数据QString strtime = index.data(Qt::DisplayRole).toString();bool isfile=index.data(Qt::UserRole+2).toBool();// 状态显示: 若该项被选中if(option.state & QStyle::State_Selected){painter->setBrush(QColor(0xCC, 0xAA, 0xAA));painter->drawRoundedRect(rect, 2, 2);}//随机产生一种颜色int count1=rand()%255+1;int count2=rand()%255+1;int count3=rand()%255+1;painter->setBrush(QColor(count1, count2, count3));painter->drawRoundedRect(rect, 2, 2);if (!isfile){QString str= index.data(Qt::UserRole).toString();bool male=index.data(Qt::UserRole+1).toBool();// 对象显示if(1){QRect dst = rect;dst.setRight(rect.left() + 40);QRect area(0,0,24,24);area.moveCenter(dst.center());painter->drawPixmap(area,male ? (iconMan) :(iconWoman));}// 内容显示if(1){QRect dst = rect;dst.setLeft(rect.left() + 40);dst.setTop(rect.top() + 20);painter->drawText(dst, Qt::AlignLeft | Qt::AlignVCenter, str);}}else{QString nowfile=index.data(Qt::UserRole+3).toString();// 对象显示if(1){QRect dst = rect;dst.setRight(rect.left() + 40);QRect area(0,0,24,24);area.moveCenter(dst.center());painter->drawPixmap(area,iconFile);}// 内容显示if(1){QRect dst = rect;dst.setLeft(rect.left() + 40);dst.setTop(rect.top() + 20);painter->drawText(dst, Qt::AlignLeft | Qt::AlignVCenter, nowfile);}}// time显示if(1){QRect dst = rect;dst.setLeft(rect.left() + 40);dst.setBottom(rect.top() + 20);painter->drawText(dst, Qt::AlignLeft | Qt::AlignVCenter, strtime);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。