gpt4 book ai didi

c++ - 调整QListView的高度以适应内容

转载 作者:行者123 更新时间:2023-11-28 06:42:52 26 4
gpt4 key购买 nike

我希望基于 QAbstractListModelQListView 的高度适合内容,如果项目的数量小于给定的数字 N。如果有更多多于 N 个项目,它应该只显示 N 个项目。我在网上阅读了很多奇怪的提示,但其中大部分看起来都像是 hack。我想这与 sizeHint() 有关,但在模型 View 方法中没有 ItemWidget,我可以在其中覆盖 sizeHint()。实现此行为的正确方法是什么?

此外,这与父应用程序的大小策略有何关联?这是第二个约束:内容不应尝试使用它们在父小部件中的空间,但父小部件应调整大小以适应 QListView

这不是 this question 的拷贝,因为我不能使用 QCompleter

最佳答案

sizeHint() 必须在 QListView 中被覆盖(分别是它的子类)。上面提到的特殊行为可以在那里实现。例如像这样:

QSize ProposalListView::sizeHint() const
{
if (model()->rowCount() == 0) return QSize(width(), 0);
int nToShow = _nItemsToShow < model()->rowCount() ? _nItemsToShow : model()->rowCount();
return QSize(width(), nToShow*sizeHintForRow(0));
}

这需要项目委托(delegate)的大小提示是合理的。就我而言:

inline QSize sizeHint ( const QStyleOptionViewItem&, const QModelIndex& ) const  override { return QSize(200, 48); }

现在我只需在更改模型后调用 updateGeometry()。

关于c++ - 调整QListView的高度以适应内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com