0

我正在使用 QItemDelegate 结合 QTableView 的 IsUserCheckable 标志来绘制居中的复选框列。在我为表格启用行选择之前,一切都运行良好。

When selection occurs, the blue selection background is the only thing painted, and the checkboxes are no longer seen.

以下是我用来从委托中绘制复选框的代码。

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);
}

关于为什么在进行选择时无法正确绘制的任何想法?

4

1 回答 1

0

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

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

您可以通过执行更改 QRect 的画家的颜色painter.setPen(QColor.red);

同样,我没有太多代码可以处理,但是如果您希望支票为不同的颜色,则需要将其设置为不同的颜色。

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

于 2011-07-20T16:05:10.150 回答