[Qt]用QItemDelegate的来修改QStandardItem字体颜色
2014-03-24 16:36
411 查看
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类型
这里我使用的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如何修改文本编辑器字体及颜色
- 修改UIAlertController的字体颜色字号
- 自定义IPython Qt Console 窗口大小、字体、颜色
- textfield修改placeholder的字体颜色和大小
- 修改form 的字段背景颜色及字体颜色
- Android修改DatePicker字体颜色及分割线颜色详细介绍
- iOS UISearchBar修改placeholder字体颜色和大小
- 修改系统action bar字体大小、粗细、颜色等样式的方法
- Qt设置背景色,按钮添加图片,实现三态,label添加图片,设置字体大小,颜色等基本操作
- Qt 设置QLabe中字体的颜色
- 修改状态栏字体颜色
- android:修改PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色
- IOS-OC 修改UITextField的Placeholder字体颜色
- 修改eclipse背景、字体颜色.
- 修改navigationbar 背景(去除横线)和字体颜色
- MFC修改Button背景颜色和字体颜色
- Android Tablayout + viewpager 切换时修改tablayout title(标题)的字体颜色和字体大小
- 修改UITextField的placeHolder的颜色及字体大小
- 如何修改TabBarItem的title的字体和颜色
- VC MFC中修改STATIC的文本颜色和文本字体等