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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox, настройка popup'а и фильтрующая модель как альтернатива QCompleter  (Прочитано 4919 раз)
Flass
Гость
« : Май 08, 2013, 07:22 »

Все началось с того что меня не радовал стандартный комплитер, так как он не умеет искать не с начала слова, не умеет отлавливать по нескольким вхождениям в строку, и наконец, если я не ошибаюсь, не может отобразить в popup'е QTreeView. Поэтому принял решение использовать редактируемый комбик, положить в него фильтрующую модель, научить ее всяким разным штукам, и в слот её передавать текст из комбика по сигналу редактирования. В этой части все получилось. Проблемы в другом - мне не удается настроить поведение popup'а корректным образом.

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

2. Когда попап вываливается, то он закрывает собой редактируемый комбик (по крайней мере в linux).
С последней проблемой я справился, унаследовався от комбика и переопределив метод showPopup, но может быть есть решение получше? (Если вы имеете в виду применение соответствующего стиля, то приведите пример как его можно накатить на этот комбик, учитывая что сам он является делегатом для таблички)

upd0: Да, и оказыватеся мой способ решения второй проблемы не совсем хорошо работает, так что этот костыль не считается )
upd1: Вторая проблема решается очень просто:
Код:
QString styleSheet =  "QComboBox { combobox-popup: 0 }";
myComboBox->setStyleSheet(styleSheet);
« Последнее редактирование: Май 24, 2013, 07:25 от Flass » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #1 : Май 08, 2013, 08:44 »

Пытался тоже в своё время сделать что-то похожее, но под Windows - получил те же проблемы с фокусом, долго ковырялся, но так на пол пути и бросил.
Записан
Flass
Гость
« Ответ #2 : Май 08, 2013, 09:08 »

Возможно вы нашли альтернативное решение? Хм.. осмелюсь даже попросить исходник, если есть) Я уже думаю написать отдельный компонент из комбинации QLineEdit и всплывающего при редактировании lineEdita виджета, в котором будет лежать вьюха.. но, слабо понимаю что там нужно будет сделать в деталях, и все еще надеюсь найти менее геморройный способ. Подмигивающий
Записан
Flass
Гость
« Ответ #3 : Май 14, 2013, 07:31 »

Ну что, товарищи бойцы, никто не одолел окаянного комбика, своевольного и глупого?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #4 : Май 14, 2013, 19:49 »

Возможно вы нашли альтернативное решение? Хм.. осмелюсь даже попросить исходник, если есть)
Нашёл - отложить до "лучших времен", а пока смириться с обычным QComboBox. Дело было довольно давно - код уже утрачен.
Записан
Flass
Гость
« Ответ #5 : Май 15, 2013, 11:29 »

Печально. Меня в принципе почти устроил комплитер, которому я по текстчендж подсовываю мою фильтрующую модель и заставляю вываливаться. Если бы не одно но. Он, собака такая, не умеет отрисовывать деревья.
Тоесть в QCompleter::setPopup запихнуть вьюху с табличкой можно, она даже будет вполне ничего себе, с чеками даже, и чекабельная даже, а вот деревянную модель показывает только в виде корневых неразвернутых итемов. Да еще и дико тормозит, вплоть до сваливания.
« Последнее редактирование: Май 16, 2013, 11:51 от Flass » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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