|
|
|
Diablus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.2.2012 Репутация: нет Всего: нет |
Добрый вечер товарищи.
Столкнулся со спецефичным требованием - нужно что бы при нажатии на элемент QComboBox (список) появлялся не обычный одно-столбцовый список, а двух столбцовый. Установка перегруженной табличной модели не помогла. Единственная мысль - создавать собственный элемент - перегружать к примеру кнопку + создавать окошко, с установкой сигналов/слотов. Возможно можно получить указатель на POP-окно QComboBox'а? Поделитесь опытом? |
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Кроме модели, нужно поменять view методом setView() - но не пробовал.
|
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
я делал проще - каждый элемент состоял из двух
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Diablus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.2.2012 Репутация: нет Всего: нет |
To math64
Мысль о перегрузке item-делегатов приходила на ум, однако разве не отсекается инфа уже в коде QComboBox? Попробую, если не найду иных вариантов. To borisbn Идея интересная, однако в каждой строчке (обоих столбцов) помимо текста должен присутствовать элемент QCheakBox, разделение пробелами не вариант. Это сообщение отредактировал(а) Diablus - 11.2.2012, 21:54 |
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Ну неслучайно же void QComboBox::setView ( QAbstractItemView * itemView ) а не void QComboBox::setView ( QListView * itemView ).
Значит, туда можно попробовать засунуть QTableView или QTreeView. Конечно, не будут работать setItemIcon(), setItemText() и пр. методы, рассчитанные на одну колонку. Устанавливать данные придётся непосредственно через модель, а делегатов - через вид таблицы. Не будет, вероятно работать и редактор - void QComboBox::setLineEdit ( QLineEdit * edit ), а не QWidget*, как у делегатов. Но не пробовал. Если не получится - делать, как делал borisbn (можно написать proxyModel, отображающую tableModel в одну колонку и делегата, отображающего одну колонку как несколько. |
|||
|
||||
loneybibi |
|
|||
Любитель Профиль Группа: Участник Сообщений: 257 Регистрация: 28.5.2010 Где: Донецк (Украина) Репутация: 3 Всего: 3 |
Для QComboBox::setView() ставишь QTreeView, а у дерева уже задаешь 2 колонки и заполняешь его элементами.
-------------------- Red Hat Fedora 17 Qt 4.8.1 (x64), GCC 4.4.3, G++ 4.4.3, QtCreator 2.4.1 |
|||
|
||||
Diablus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.2.2012 Репутация: нет Всего: нет |
Перегружал, заполнял две колонки, отображается только одна. Есть такая функция QComboBox::SetColumnView(int) задающая как раз номер отображаемой колонки. Это сообщение отредактировал(а) Diablus - 12.2.2012, 08:52 |
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Покопайся в исходиниках, посмотри почему так выходит. Вероятно, QComboBox создаёт свой QListView взамен QTableView после твоего вызова setView().
Если не получится - делай как borisbn. Если данные выбираются из базы данных, запрос (для sqlite)
Делегат потом режет split(',') и выводит отдельными колонками. |
|||
|
||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Вот комбо-бокс с таблицей:
Но в свёрнутом виде показывает одну колонку - ту, что была выбрана. Но я думаю, это можно переопределить в производном классе. |
|||
|
||||
teatorb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2022 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
Queuego |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 4.11.2022 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |