Название: [QT4.2.2] QCheckBox в QCombobox Отправлено: odin от Февраль 03, 2007, 13:38 Подскажите реальное решение как всунуть чекбоксы в список QСomboBox
Название: [QT4.2.2] QCheckBox в QCombobox Отправлено: Tonal от Февраль 04, 2007, 09:21 Устанавливаешь модель QComboBox::setModel
В модели: при возврате флага (функция flags(...)) добовляешь Qt::ItemIsUserCheckable к остальным нужным флагам. В data(...) и setData(...) отрабатываешь роль Qt::CheckStateRole Название: [QT4.2.2] QCheckBox в QCombobox Отправлено: odin от Февраль 06, 2007, 19:49 извини плиз..... но в QT новичок.... нельзя ли примерчик подкинуть..
за ранее премного благодарен:) Название: [QT4.2.2] QCheckBox в QCombobox Отправлено: Tonal от Февраль 07, 2007, 15:45 Вот кусок модели с чеками, правда на python-е но на С++ переносится без проблем. ;-)
Код:
Название: [QT4.2.2] QCheckBox в QCombobox Отправлено: odin от Февраль 07, 2007, 22:01 от Питона я как от Луны:)..... но всё равно спасибо.... пимеры из PyQt видел.. смысл понял.....
Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: Pink_Panter от Август 04, 2010, 12:45 Пробовал сделать как указано в теме, унаследовал модель, переопределил flag, data, setData
подключаю модель к TableView - есть чекбоксы. Подключаю к QComboBox - нет чекбоксов. Попробовал подсунуть - чекбоксу QStyledItemDelegate с помощью setItemDelegate - чекбоксы стали отображаться, но не переключаются. Только если открывать комбобокс в месте, где потом появятся чекбоксы. Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: Pink_Panter от Август 05, 2010, 12:01 Небольшое дополнение.
Qt 4.6.2, OS - Ubuntu 10.04 32 bit Чекбоксы так-же начинают отображаться при установки QListView с помощью setView для QComboBox. но вот управлять чекбоксами так и не получается. Если просто разместить на форме QListView с той же моделью - все работает нормально. Вопрос - как все таки можно пробросить управление от комбобокса к его View или делегату ? Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: asvil от Август 05, 2010, 15:48 Есть еще данное решение:
http://da-crystal.net/GCMS/blog/checkboxlist-in-qt/ Перейдя по ссылке Вы увидите, что на представление устанавливается фильтр сообщений, который перехватывает клик, тем самым не давая сработать поведению qcombobox'а на данный клик. Возможно Вам это поможет. Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: Pink_Panter от Август 06, 2010, 06:37 Спасибо.
Мне попадалась эта статья, но я раньше её отбрасывал т.к. мне не понравилось, что наследуется делегат, причем он заточен на Qt::UserRole для управления чекбоксами. Что отличается от стандартного Qt::CheckStateRole. Сейчас перечитал её более внимательно и увидел вот такую вещь: Код: // Enable editing on items view Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: Pink_Panter от Август 10, 2010, 20:19 Если кому будет интересно - вот результат, который в принципе меня устроил. "мелочь" которая мне не нравится - это то, что чекбокс ставится/снимается щелчком в любом месте итема, а не только в квадратике.
Код: #include "qcombocheckbox.h" Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: crossly от Август 10, 2010, 21:10 кстати... наследоватся совсем не обязательно.... надо было просто не только модель подсунуть комбобоксу но и вью. ( setView)
Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: Pink_Panter от Август 12, 2010, 04:18 Не совсем так.
Для того что бы чекбоксы не только отображались, но и работали, пришлось наследоваться. По крайней мере в моем случае. Название: Re: [QT4.2.2] QCheckBox в QCombobox Отправлено: PavelVX от Ноябрь 21, 2011, 12:36 спасибо за наводку, как это вообще реализовывать!
Но не могли бы вы объяснить новичку, что я делаю не так? Qt 4.7.4 Код: //qcombocheckbox.h Код: QComboCheckBox * comboCheckBox = new QComboCheckBox(this); |