当使用具有不同高度的自定义委托时,QListView无法正确调整行高

时间:2016-03-14 10:19:41

标签: qt qt5

我有两个自定义委托实现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。但是,如果在设置之后,我尝试将其更改为另一个,行高度不会改变,例如:

首先让我们设置海报代表,一切正常:

enter image description here

然后将其更改为文本委托:

enter image description here

正如你所看到的那样,40px的额外空间不会消失。如果我尝试以另一种方式(从文本到海报代表)这样做,那么它就是一团糟。我需要视图来正确调整行高。怎么样?感谢。

1 个答案:

答案 0 :(得分:1)

更改委托后,使用QAbstractItemView::reset()方法重置视图的内部状态。