QListView高度根据内容

时间:2011-04-19 19:37:09

标签: c++ qt user-interface qt4

我有一个带有字符串列表的QListView。

基本上,我将它用作自动填充过程的QLineEdit的弹出窗口。 我不希望QListView显示空白行,只显示包含字符串的行。 看到这个: Image

我希望它自动调整大小,以便在最后一次输入后不会有这些空行。

由于

1 个答案:

答案 0 :(得分:3)

您可以尝试执行此操作:重新实现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 class with QLineEdit。它已经针对您的需求而设计,您无需花时间尝试使其正常工作。