【发布时间】:2016-02-23 10:55:03
【问题描述】:
我正在使用 QTableView 和 QStandardItemModel 并且我正在尝试用保持黑色的字体为行着色。
我正在使用我的委托类的绘制方法:
void Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QBrush brush(Qt::red, Qt::SolidPattern);
painter->setBackground(brush);
}
这根本不起作用,它使每个单元格中的文本透明。我在这里做错了什么?
[编辑]
我也使用过painter->fillRect(option.rect, brush);,但它使单元格背景和文本颜色相同。
【问题讨论】:
-
您不需要使用委托。只需尝试使用
Qt::FontRole和Qt::BackgroundColorRole角色的QStandardItem::setData()函数。 -
它不会使文本透明它不会被绘制,因为您的实现什么都不做。你的班级
Delegate继承了有用的东西吗? -
我添加了一个
drawDisplay()函数和fillRect(),它似乎可以做我想做的事情,绘制背景并将文本保持黑色 -
再次:您根本没有绘制任何文本,委托方法应该这样做!最好的解决方案是使用现有的实现并仅更改一些数据!再说一遍:Delegate 继承了什么?
标签: c++ qt delegates qtableview qpainter