Russian Qt Forum
Ноябрь 27, 2024, 19:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QCompleter и возможность редактирования QLineEdit  (Прочитано 7939 раз)
nixman05
Гость
« : Июнь 06, 2010, 16:35 »

На виджете расположен QLineEdit на который установлен QCompleter

Код
C++ (Qt)
   completer=new QCompleter();
   eText->setCompleter(orgs_completer);
 

Периодически возникает необходимость добавления элементов в модель QCompleter'а

Код
C++ (Qt)
   QStandardItemModel *model=qobject_cast<QStandardItemModel*>(completer->model());
   model->appendRow(item);
   completer->setModel(model);
   completer->popup()->update();
 

Модель обновляется и при наборе появляются добавленые элементы. Но после потери фокуса eText, он перестает быть редактируемым. Установка eText->setReadOnly(false) никчему не приводит.
Записан
ритт
Гость
« Ответ #1 : Июнь 08, 2010, 07:46 »

    completer->setModel(model);
    completer->popup()->update();
закомментировать или убрать к богам.
читать документацию по модель-представление.
Записан
nixman05
Гость
« Ответ #2 : Июнь 08, 2010, 17:01 »

   completer->setModel(model);
    completer->popup()->update();
закомментировать или убрать к богам.
читать документацию по модель-представление.


Есть справочник, представляющий из себя QStandardItemModel. QCompleter основывается на нем:
Код
C++ (Qt)
   completer->setModel(model);
 

И при наборе в eText какого либо текста происходит автодополнение. Все работает.
Но периодически возникает необходимость добавлять в справочник дополнительные значения. 
Я реализуюю это приведенным мною способом. Справочник обновляется, и новые элементы добавляются при вводе.

А проблема в том, что когда после обновления справочника, eText теряет фокус, он становится нередактируемым.
Записан
ритт
Гость
« Ответ #3 : Июнь 08, 2010, 23:22 »

ну, давай минимальный компилябельный пример - посмотрим.
в противном случае могу повторить предыдущий пост...
Записан
nixman05
Гость
« Ответ #4 : Июнь 09, 2010, 22:17 »

ну, давай минимальный компилябельный пример - посмотрим.

Прикрепляю минимальный компилябильный пример.
 P.S. Если что, то я использую Qt 4.5
Записан
ритт
Гость
« Ответ #5 : Июнь 10, 2010, 01:19 »

Qt 4.7: проблема не воспроизводится. или я что-то не так понял/не так делаю, но eText не перестаёт быть редактируемым...

зы. и всё же completer->setModel(model) и completer->popup()->update() при добалении элемента не нужны
Записан
ритт
Гость
« Ответ #6 : Июнь 10, 2010, 01:22 »

о, нашёл старую завалящую 4.5.1 - результат тот же.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.226 секунд. Запросов: 21.