qstyleditemdelegate重写pait,匹配指定文字进行背景高亮
时间: 2024-11-12 12:34:24 浏览: 7
`QStyledItemDelegate`是Qt库中的一个样式类,主要用于自定义QTableView或QListView等模型视图中的单元格呈现。如果你想对特定的文字内容进行背景高亮显示,你可以通过重写`paint()`方法来实现。
在`paint()`方法中,你可以检查每个绘制的项的数据,如果数据包含你需要匹配的关键字,那么可以设置相应的画笔样式,如背景色,然后调用`drawText()`或`drawRect()`函数来高亮这部分文本。这是一个简单的示例:
```cpp
void MyStyledItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) {
if (/* 检查 index 数据是否包含关键字 */) {
painter->save();
painter->setBrush(Qt::yellow); // 设置高亮颜色
painter->setPen(Qt::NoPen);
QRect rect = option.rect; // 获取文本区域
painter->drawRect(rect);
painter->setFont(option.font); // 使用当前字体
// 然后绘制正常的内容
QString text = index.data().toString();
painter->drawText(rect, Qt::AlignCenter, text);
painter->restore(); // 恢复到之前的画刷状态
} else {
QStyledItemDelegate::paint(painter, option, index);
}
}
```
阅读全文