1

我有一张桌子,我正在尝试按照qt 文档中的示例添加自定义委托。然而,虽然背景颜色似乎是正确的,但覆盖似乎丢失了,以防选择了行(请注意在评级单元格和行的其余部分之间具有蓝色背景的列中的差异)。像标准委托那样绘制背景的最简单方法是什么?

因为QItemDelegate似乎有drawBackground,但是没有这样的功能QStyledItemDelegate。不幸drawBackground的是,还省略了您在左侧单元格中看到的稍微亮一点的矩形(顶部和底部比背景小 1 px)。

在此处输入图像描述

4

1 回答 1

0

您说您根据 Qt StarDelegate 示例为您的委托建模。就像一个实验。您能否尝试根据以下代码为您的委托建模:

void StarDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
    QStyledItemDelegate::paint(painter, option, index);
    if (index.data().canConvert<StarRating>()) {
        StarRating starRating = qvariant_cast<StarRating>(index.data());
        QStyledItemDelegate::paint(painter, option, index);
        starRating.paint(painter, option.rect, option.palette,
            StarRating::ReadOnly);
    }
}

它也是 Qt 示例中的 StarDelegate,但我对其进行了一些更改,以便不管表格单元格首先绘制默认背景。然后,如果是 StarRating 单元格,则为星星。我希望你能以这种方式获得默认样式的背景。不保证,我自己没试过。:-)

于 2015-04-28T16:00:39.453 回答