我有一张桌子,正在尝试在example from the qt documentation之后添加自定义委托。然而,虽然背景颜色似乎是正确的,但是如果选择了行,则覆盖似乎缺失(注意 rating 单元格与其余部分之间的蓝色背景的列中的差异行)。 绘制背景的最简单方法是什么,就像标准委托一样?
对于QItemDelegate
似乎有drawBackground
,但QStyledItemDelegate
没有这样的功能。不幸的是drawBackground
,也省略了在你左边的单元格中看到的略亮的矩形(顶部和底部比背景小1 px)。
答案 0 :(得分: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单元格,则为星星。我希望你能以这种方式获得默认的样式背景。不能保证,我自己也没试过。 : - )