我有两个自定义委托实现sizeHint成员函数,如下所示:
QSize MovieListPosterDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &) const
{
return {option.rect.width(), 80};
}
QSize MovieListTextDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &) const
{
return {option.rect.width(), 40};
}
如果我先设置文本委托,则行高为40px。如果我先设置海报代表,行高为80px。但是,如果在设置之后,我尝试将其更改为另一个,行高度不会改变,例如:
首先让我们设置海报代表,一切正常:
然后将其更改为文本委托:
正如你所看到的那样,40px的额外空间不会消失。如果我尝试以另一种方式(从文本到海报代表)这样做,那么它就是一团糟。我需要视图来正确调整行高。怎么样?感谢。
答案 0 :(得分:1)
更改委托后,使用QAbstractItemView::reset()
方法重置视图的内部状态。