1

我的自定义项目委托覆盖了这个函数:

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 与0and进行比较来作弊rowCount()-1,但我想知道为什么这不起作用。

4

1 回答 1

2

据我了解viewItemPosition未在 QListView 的绘制事件中设置。我已经在这里检查过了。在我的沙箱中,无论项目位于顶部还是底部,它都会返回 0。

于 2015-08-12T21:03:50.387 回答