Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: nixman05 от Июнь 06, 2010, 16:35



Название: QCompleter и возможность редактирования QLineEdit
Отправлено: 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) никчему не приводит.


Название: Re: QCompleter и возможность редактирования QLineEdit
Отправлено: ритт от Июнь 08, 2010, 07:46
    completer->setModel(model);
    completer->popup()->update();
закомментировать или убрать к богам.
читать документацию по модель-представление.


Название: Re: QCompleter и возможность редактирования QLineEdit
Отправлено: nixman05 от Июнь 08, 2010, 17:01
   completer->setModel(model);
    completer->popup()->update();
закомментировать или убрать к богам.
читать документацию по модель-представление.


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

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

А проблема в том, что когда после обновления справочника, eText теряет фокус, он становится нередактируемым.


Название: Re: QCompleter и возможность редактирования QLineEdit
Отправлено: ритт от Июнь 08, 2010, 23:22
ну, давай минимальный компилябельный пример - посмотрим.
в противном случае могу повторить предыдущий пост...


Название: Re: QCompleter и возможность редактирования QLineEdit
Отправлено: nixman05 от Июнь 09, 2010, 22:17
ну, давай минимальный компилябельный пример - посмотрим.

Прикрепляю минимальный компилябильный пример.
 P.S. Если что, то я использую Qt 4.5


Название: Re: QCompleter и возможность редактирования QLineEdit
Отправлено: ритт от Июнь 10, 2010, 01:19
Qt 4.7: проблема не воспроизводится. или я что-то не так понял/не так делаю, но eText не перестаёт быть редактируемым...

зы. и всё же completer->setModel(model) и completer->popup()->update() при добалении элемента не нужны


Название: Re: QCompleter и возможность редактирования QLineEdit
Отправлено: ритт от Июнь 10, 2010, 01:22
о, нашёл старую завалящую 4.5.1 - результат тот же.