Qt:Checkbox& QItemDelegate-选择发生时不绘制复选框

时间:2010-12-14 21:20:30

标签: qt checkbox paint qitemdelegate

我正在使用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);
}

在做出选择时,为什么没有正确绘画的任何想法?

1 个答案:

答案 0 :(得分:0)

很难确信我的答案会因为缺少发布的代码而对你有帮助,但我认为你的问题是画家不仅画了QRect,而且还画了QItemDelegate。这意味着除非您明确告诉它想要的QRect颜色,否则它会将其绘制为与整个单元格相同的颜色。

如果这是真的,那么你的QRect仍然存在,但它的颜色与单元格其他内容的颜色相同。

您可以通过painter.setPen(QColor.red);

更改QRect画家的颜色

同样,我没有太多代码可以解决,但如果你想让支票颜色不同,你需要将它设置为不同的颜色。

如果您提供更多代码,我可以更清楚地回答您。