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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox with submenu в качестве делегата  (Прочитано 3077 раз)
galilley
Гость
« : Сентябрь 02, 2010, 18:19 »

Доброго времени!
Захотелось сделать делегат типа combobox, но чтобы были подменю.
Сам combobox создавать подменю не умеет. Пробовал взять QToolButton, но возникла проблема с внесением данных в модель. По клику на ячейке открывается toolbutton, но при шелчке по кномке открывается меню   QToolButton, а сам persistentEditor закрывается, и происходит комит того значения, что было по умолчанию. Т.о. дальнейший выбор в открывшемся меню ни на что не влияет, и перехватить его у меня не получается.
Может кто создавал что-нить подобное?
Спасибо.
« Последнее редактирование: Сентябрь 02, 2010, 18:45 от galilley » Записан
merke
Гость
« Ответ #1 : Сентябрь 02, 2010, 18:31 »

А что если не использовать ни какие делегаты, взять что то типа фрейма, в комбобоксе если у итема есть субменю ставим флаг именно для этого итема, при клике на нем мы смотрим на этот флаг если есть субменю определяем координаты указателя через QEvent и показываем наш сгенерированный фрейм со своими уникальными для каждого случая данными. при клике за фреймом убирать фрейм.
Записан
Marat(Qt)
Гость
« Ответ #2 : Сентябрь 09, 2010, 13:16 »

Доброго времени!
Захотелось сделать делегат типа combobox, но чтобы были подменю.
Сам combobox создавать подменю не умеет. Пробовал взять QToolButton, но возникла проблема с внесением данных в модель. По клику на ячейке открывается toolbutton, но при шелчке по кномке открывается меню   QToolButton, а сам persistentEditor закрывается, и происходит комит того значения, что было по умолчанию. Т.о. дальнейший выбор в открывшемся меню ни на что не влияет, и перехватить его у меня не получается.
Может кто создавал что-нить подобное?
Спасибо.
Насколько мне известно, эдитор закрывается когда теряет фокус. Если в качестве эдитора использовать обычный виджет со strongFocus и лежащим на ним toolButton с noFocus, то, вероятно, эдитор не закроется при клике по toolButton.

p.s. У меня нет опыта работы с меню для toolButton'a. Однако, можно предположить, что именно это меню отнимает фокус, помешайте ему (у меню тоже есть focusPolicy)
« Последнее редактирование: Сентябрь 09, 2010, 13:23 от Marat(Qt) » Записан
galilley
Гость
« Ответ #3 : Сентябрь 12, 2010, 17:44 »

Всё гениально просто, спасибо за идею!
Дело действительно в потере фокуса, только вопрос решился не
Код:
menu->setFocusPolicy(Qt::NoFocus);
а с помощью
Код:
editor->setFocusProxy( menu);
Ну и ещё по вкусу:
Код:
editor->setPopupMode( QToolButton::InstantPopup );
где:
Код:
QToolButton *editor = new QToolButton(parent);
QMenu* menu = new QMenu(editor);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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