QListView 高度根据内容
Posted
技术标签:
【中文标题】QListView 高度根据内容【英文标题】:QListView height according to contents 【发布时间】:2011-04-19 19:37:08 【问题描述】:我有一个带有字符串列表的 QListView。
基本上,我将它用作 QLineEdit 的弹出窗口,用于自动完成过程。 我不希望 QListView 显示空行,只显示其中包含字符串的行。 看到这个:
我希望它自动调整大小,以便在最后一个条目之后不会有这些空白行。
谢谢
【问题讨论】:
你看过 QCompleter 吗?那应该做你想做的。 我不是要自动完成,而是要避免出现这些空白行。 【参考方案1】:您可以尝试这样做:重新实现QListView::rowsInserted() 方法类。假设您从 QListView 继承了 MyListView。所以代码可以是这样的:
void MyListView::rowsInserted ( const QModelIndex & parent, int start, int end )
QListView::rowsInserted(parent, start, end);
int rc = model()->rowCount();
// use this all the rows have the same height. otherwise
// you will need to iterate and sum all row heights
resize(width(), rc ? rc*sizeHintForRow(0): height());
但为了更简单,我建议您使用QCompleter 类with QLineEdit。它已经为您的需要而设计,您无需花时间尝试使其发挥作用。
【讨论】:
好吧,我使用了'resize(width(), rc ? rc*sizeHintForRow(0): height());'在paintEvent 方法中,似乎它成功了。以上是关于QListView 高度根据内容的主要内容,如果未能解决你的问题,请参考以下文章
QListView 拒绝显示子类化的 QAbstractListModel