Высота QListView в соответствии с содержимым - PullRequest
3 голосов
/ 19 апреля 2011

У меня есть QListView со списком строк.

По сути, я использую его как всплывающее окно для QLineEdit для процесса автозаполнения. Я не хочу, чтобы QListView отображал пустые строки, только те строки, в которых есть строки. Видеть это: image

Я хочу, чтобы он автоматически изменял свой размер, чтобы после последней записи не было этих пустых строк.

Спасибо

1 Ответ

3 голосов
/ 20 апреля 2011

Вы можете попытаться сделать это: Переопределить QListView :: rowInserted () Класс метода.Скажем, у вас есть MyListView, унаследованный от QListView.Таким образом, код может выглядеть следующим образом:

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 с QLineEdit .Он уже разработан для того, что вам нужно, и вам не нужно тратить время на то, чтобы заставить его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...