LINUX.ORG.RU

QComboBox + setEditable + QCompleter - как запретить ввод некоректных данных?

 , , ,


0

1

имеем:

QComboBox *box = new QComboBox(this);
box->addItems(items);
box->setCurrentIndex(-1);
QCompleter complit = new QCompleter(items, this);
box->setCompleter(complit);
complit->setCaseSensitivity(Qt::CaseInsensitive);
complit->setCompletionMode(QCompleter::UnfilteredPopupCompletion);

как запретить пользователю вводить некоректные значения которых нет в списке. То есть например пользователь ввел T ему комплитнулось, но если он ввел еще раз T но в списке нет слов начинающихся на ТТ эта Т не ввелась. По документации ничего похожего не смог найти. Самому писать?

Сама-сама-сама... Не в ресторане, самообслуживание.

anonymous
()

Зачем тебе editable, если ты его ограничиваешь содержимым бокса? Делай обычный бокс, там при фокусе варианты и так будут выбираться с клавиатуры.

staseg ★★★★★
()
Ответ на: комментарий от staseg

Из сидящих около меня людей (десятка два инженеров-электронщиков) ни для кого не является ожидаемым поведением, что в комбобокс можно что-то набирать с клавиатуры.

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 2)
Ответ на: комментарий от staseg

Это понятно, и возможно я зашел не с той стороны. Необходимо поведение при котором если на боксе находится фокус и пользователь начинает что то вводить то бокс должен раскрываться, но по умолчанию этого не происходит.

Noob_Linux ★★★★
() автор топика
Ответ на: комментарий от unC0Rr

Спасибо, надо будет покопать в этом направлении

Noob_Linux ★★★★
() автор топика
Ответ на: комментарий от RiseOfDeath

Это не «ожидаемое поведение» это ТЗ, т.к. работу нужно осуществлять без использования мыши.

Noob_Linux ★★★★
() автор топика
Ответ на: комментарий от Noob_Linux

Ну ТЗ так ТЗ. Я просто к тому клоню, что от текстового поля (типа QEdit) такое поведение (ввод текста с клавиатуры) как-то ожидаемо, а от списка (типа QComboBox) нет. ХЗ, мож у меня коллеги специфичные.

Впрочем еслип рога ориентирована на обезьянок, то вышеизложеный вариант (при наличии пошаговой инструкции) подойдет.

Опрос чтоль в инете провести интереса ради.

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 3)
Ответ на: комментарий от RiseOfDeath

В данном случае как раз дефолтное поведение бокса не является ожидаемым. Видя фокус на боксе я ожидаю что при начале ввода он раскроется. Я пытался исправить этого через комплитер.

Noob_Linux ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.