首页 > 其他 > 详细

[Qt]用QItemDelegate的来修改QStandardItem字体颜色

时间:2014-03-24 19:09:07      阅读:1135      评论:0      收藏:0      [点我收藏+]

1.重写ItemDelegate的Item方法

这里我使用的QListView来显示Log日志,将写好的代理在初始化中就可以直接赋值上。

m_LogModel = new QStandardItemModel();
this->textEditLog->setEditTriggers(QAbstractItemView::NoEditTriggers);
this->textEditLog->setModel(m_LogModel);
PItemDelegateEx *delegateEx = new PItemDelegateEx;
this->textEditLog->setItemDelegate(delegateEx);

 

后面在收到Log的时候,直接添加上去即可,这里我想传一个标记字段,苦苦没找到方法,后来查看API手册,看到setData方法,

尝试了一下,成功解决了!

QStandardItem *item = new QStandardItem(str);
item->setSizeHint(QSize(25,25));
QVariant typeVal(type);
item->setData(typeVal,Qt::DecorationPropertyRole);
m_LogModel->appendRow(item);

 

 

在Opaint中去解析,绘图即可:

Q_ASSERT(index.isValid());

QString text = index.data(Qt::DisplayRole).toString();
if(!text.isEmpty())
{
painter->save();
QRect cellRect = option.rect;
QBrush brush;

int m_nMsgType = index.data(Qt::DecorationPropertyRole).toInt();
qDebug() << "DelegateItem Type : " << m_nMsgType;
if(m_nMsgType == LOGTYPE_NORMAL){
painter->setPen(QColor(0,255,0));
}
else{
painter->setPen(QColor(255,0,0));
}

painter->drawText(cellRect, Qt::AlignLeft, text);
painter->restore();
}

 

最后就可以实现,传不同的type值进来即可显示不同的颜色!从而标记不同的log类型

[Qt]用QItemDelegate的来修改QStandardItem字体颜色,布布扣,bubuko.com

[Qt]用QItemDelegate的来修改QStandardItem字体颜色

原文:http://www.cnblogs.com/hermit/p/3621171.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!