Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Amouse от Май 06, 2008, 18:00



Название: большой QCompleter
Отправлено: Amouse от Май 06, 2008, 18:00
Если в процессе набора строки, кол-во строк "автозаполнения" в QCompleter получается большим (несколько сот)
и не слишком быстрым в формировании - появляется необходимость заполнять QCompleter частично, теми строками, что уже найдены. И соответственно, QCompleter должен иметь скроллирование, по которому ищутся и заполняются очередные строки.
 
Соственно, как это сделать? Я даже что-нибудь вроде OnScroll в комплитере не вижу.


Название: Re: большой QCompleter
Отправлено: Amouse от Май 08, 2008, 11:44
А как-нибудь можно completer вынести в другой поток?


Название: Re: большой QCompleter
Отправлено: pastor от Май 08, 2008, 11:48
А как-нибудь можно completer вынести в другой поток?

Это не GUI класс, так что можно вынести в отдельный поток. Только непонятно зачем и как при этом будет происходить с ним работа?


Название: Re: большой QCompleter
Отправлено: Вячеслав от Май 08, 2008, 14:16
Ну подцепи к нему модель и рули ей как хош ;) точнее связку прокси + модель данных .
Прокси нужен чтоб фильтровать только нужные хвосты( я в модель данных добавлял поле - видимая строка или нет ) .


Название: Re: большой QCompleter
Отправлено: Amouse от Май 08, 2008, 17:10
Это не GUI класс, так что можно вынести в отдельный поток. Только непонятно зачем и как при этом будет происходить с ним работа?

так в том-то и дело, Completer прикручивается к QComboBox, который GUI. И что тогда выносить в поток, и как оно будет работать?

А зачем - чтобы программа не висла на несколько секунд (или больше) когда Completer шарится по диску читая файлы и формируя свою структуру, которая может быть и больше 1000 строк.


Название: Re: большой QCompleter
Отправлено: Amouse от Май 08, 2008, 17:11
Прокси нужен чтоб фильтровать только нужные хвосты

что за хвосты?   ???


Название: Re: большой QCompleter
Отправлено: Amouse от Май 08, 2008, 17:14
собственно со скролированием - хрен с ним. (первоначальная идея была - подгрузка строк в completer`e по мере скролирования).
Пусть completer формируется сразу весь (скролинг тогда обрабатывать не нужно, но и дефолтный будет нормально работать),
но вот сделать так, чтобы программа не подвисала в процессе набора строки текста (и соотв-но работы completer),
без этого очевидно никак.


Название: Re: большой QCompleter
Отправлено: Вячеслав от Май 08, 2008, 19:01
Прокси нужен чтоб фильтровать только нужные хвосты

что за хвосты?   ???
Нужные элементы , которые сейчас должны быть обработаны комплитером
А тормоза-то с чего ? Сформируй 1 раз модель и скармливай ее нужным товарисчам ;)


Название: Re: большой QCompleter
Отправлено: Amouse от Май 12, 2008, 14:31
А тормоза-то с чего ?

зашли в каталог, стали набирать имя файла, а каталог большой, пока весь прочли, сформировали новые данные для модели, вот и тормоза.


Название: Re: большой QCompleter
Отправлено: Electronix от Май 19, 2008, 00:26
А эти большие каталоги всегда не определенные ? Ты можешь их хотя бы знать заранее ? И например при запуске программы создовать некий индекс по этим каталогам и работать с ним уже всегда.


Название: Re: большой QCompleter
Отправлено: Amouse от Июнь 03, 2008, 15:49
Судя по описанию setModel(), при установке очередной модели предыдущая делититься. Надо ли это понимать так, что при delete самого QCompleter связанная с ним модель тоже удалиться автоматом?
Во всяком случае в примере Completer, delete для модели нет.