我怎么知道我的QItemDelegate何时是列表中的最后一项?

时间:2015-08-12 17:36:51

标签: qt qt5 qitemdelegate

我的自定义项委托会覆盖此功能:

void TileToolDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const

一切正常并且很好,除非出于某种原因,' option.viewItemPosition'总是 QStyleOptionViewItem :: ViewItemPosition :: Invalid

我试图检查该项目是否是列表中的最后一项:

//Draw the dropshadow, if this is the final item in the list.
if(option.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::End
|| option.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::OnlyOne)
{
    //...
}

调试显示,对于每个项目,结果都是 ViewItemPosition :: Invalid 。 =(...

我的模特应该提供这些细节吗?如果是这样,怎么样? 我的模型继承了QAbstractListModel,视图是QListView。

注意:因为我不知道为什么这不起作用,我只是通过将QModelIndex与0rowCount()-1进行比较来作弊,但是我&#39 ;我想知道为什么这不起作用。

1 个答案:

答案 0 :(得分:2)

据我所知, viewItemPosition 未在QListView的paint事件中设置。我已经检查了here。在我的沙盒中,无论顶部还是底部的项目,它都会返回0。