我正在使用QItemDelegate与QTableView的IsUserCheckable标志相结合来绘制一个居中的复选框列。一直工作正常,直到我为表格启用行选择。
当选择发生时,蓝色选择背景是唯一绘制的,并且不再显示复选框。
以下是我用来从委托中绘制复选框的代码。
void CheckboxDelegate::drawCheck(QPainter* painter, QStyleOptionViewItem const& option, QRect const& rect, Qt::CheckState state) const
{
QSize size = check(option, option.rect, Qt::Checked).size();
QRect checkboxRect = QStyle::alignedRect(option.direction, Qt::AlignCenter, size, option.rect);
QItemDelegate::drawCheck(painter, option, checkboxRect, state);
}
在做出选择时,为什么没有正确绘画的任何想法?
答案 0 :(得分:0)
很难确信我的答案会因为缺少发布的代码而对你有帮助,但我认为你的问题是画家不仅画了QRect,而且还画了QItemDelegate。这意味着除非您明确告诉它想要的QRect颜色,否则它会将其绘制为与整个单元格相同的颜色。
如果这是真的,那么你的QRect仍然存在,但它的颜色与单元格其他内容的颜色相同。
您可以通过painter.setPen(QColor.red);
同样,我没有太多代码可以解决,但如果你想让支票颜色不同,你需要将它设置为不同的颜色。
如果您提供更多代码,我可以更清楚地回答您。