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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox со строкой ввода  (Прочитано 3907 раз)
INZER
Новичок

Offline Offline

Сообщений: 20


Просмотр профиля
« : Июнь 07, 2022, 17:13 »

Добрый день,
 
Использую QComboBox со свойством setEditable(true)
В данном режиме вверху комбобокса появляется lineEdit в кототом можно вводитьтекст
Данный lineEdit я использую для поиска и фильтрации значений в комбобокс.

Однако,  когда я ввожу текст, то Qt подставляет первый подходящий элемент из списка. Можно как то отключить это?

Скрин прикреплен по ссылке. В строку ввода я написал ".V", все остальное дописалось автоматически, что очень мешает, так как по сигналу currentTextChanged отслеживаю изменения текста.

https://disk.yandex.ru/i/ZJNeaHp6arnldg

Записан
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Июнь 07, 2022, 17:33 »

Привет.

Скорее всего можно настройками QCompleter что-то поменять
Записан
INZER
Новичок

Offline Offline

Сообщений: 20


Просмотр профиля
« Ответ #2 : Июнь 08, 2022, 00:23 »

Спасибо за наводку ... не знал об этом классе

Для меня идеально подошло:
cblAir->lineEdit()->completer()->blockSignals(true);

Для будущих потомков: может кому то будет интересно поиграться с различными видами автодополнения
QCompleter::PopupCompletion   0   Current completions are displayed in a popup window.
QCompleter::InlineCompletion   2   Completions appear inline (as selected text).
QCompleter::UnfilteredPopupCompletion   1   All possible completions are displayed in a popup window with the most likely suggestion indicated as current.

Устанавливаются методом
void   setCompletionMode(QCompleter::CompletionMode mode)

Странно что по аналогии с другими флагами нет что то типа QCompleter::NoCompletion  Плачущий
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #3 : Июнь 08, 2022, 13:59 »

Странно что по аналогии с другими флагами нет что то типа QCompleter::NoCompletion  Плачущий
Может, потому что вы пытаетесь приспособить стандартный виджет для несвойственного ему применения?  В замешательстве
В параллельной теме о комбо с элементами выбора я хотел об этом вам написать, но погуг.. пояндексив, нашел, что вы не один такой креативный. Пусть принципы организации UI/UX сформулированы не нами, но чтобы их модифицировать, нужны весьма веские основания. Коих у вас, думаю, еще не появилось Улыбающийся
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
INZER
Новичок

Offline Offline

Сообщений: 20


Просмотр профиля
« Ответ #4 : Июнь 09, 2022, 09:31 »

Тему Вы конечно подняли довольно таки спорную и холиварную.... ))

1 По поводу отключения автодополнения через флаг QCompleter мне кажется очень логичным, по аналогии с другими флагами фреймфорка, например QAbstractItemView::NoSelection.
2 Чекбоксы в комбобоксе расширяют его возможности до флага QAbstractItemView::MultiSelection в табличках. как по мне очень удобно там, где нет места для табличного представления.
3 .
Цитировать
Пусть принципы организации UI/UX сформулированы не нами, но чтобы их модифицировать, нужны весьма веские основания.
Да, например "требование дизайнера" является веским основанием или нет? В следующий раз отправлю им Вашу цитату Улыбающийся. В то же самое время разработчики фреймворка почему то не сделали UI классы final... А если пойти шире то многие "прокачивают" автомобили, а не ездят на стандартных комплектациях, многие делаю ремонт в квартирах а не живут в типовых коробочках  Улыбающийся Иногда бывает и так что приходится модифицировать стандартное поведение UI.
4 Как я понимаю форумы нужны для решения технических вопросов, с которыми некоторые люди не могут справиться по различным причинам. Если акцентироваться на "зачем делать", а не "как делать", то  99% тем, НЕ относящихся к категории "помогите новичку" можно закрыть с формулировкой "зачем тебе это надо так никто не делает".

Со всем уважением и спасибо за помощь в параллельных темах  Подмигивающий


Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #5 : Июнь 09, 2022, 13:04 »

Если акцентироваться на "зачем делать", а не "как делать", то  99% тем, НЕ относящихся к категории "помогите новичку" можно закрыть с формулировкой "зачем тебе это надо так никто не делает".
Да нет, что вы, вовсе я не хотел остудить ваш творческий порыв. Тем более "новичку", который стремится раздвинуть горизонты обычного Улыбающийся
Я это написал с единственной целью, чтобы вы задумались над тем, что кроме разработчика есть еще и пользователи, которые не так "продвинуты", как вы, и что им привычнее пользоваться программой, в которой элементы ведут себя так, как они этого ожидают.
Успехов!
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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