Название: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Сентября 18, 2007, 11:32 Доброго дня!
Собственно сабж! Как делается на TableView такая штука, чтобы пользователь мог влючить или отключить показ колонок в таблице? Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: Пантер от Сентября 18, 2007, 11:48 Конекти клик по HeaderView (ссылку на него можно достать из TableView) с функцией, которая будет создавать менюху. Потом hideColumn(int). В чем вообще проблема?
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Сентября 18, 2007, 11:51 Как выловить клик по хедеру - это понятно, а вот как эту менюшку сделать такую?
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: EhTemka от Сентября 18, 2007, 13:10 Зделай контекстное меню, так проще :)
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 17, 2007, 22:43 Реализую функцию, которая бы генерировала менюшку.
Вот произошел затык ;( Знаю, что передавать параметры в слоты нельзя, но специально пишу заведомо не рабочий код коннекта сигнала, т.к. логически понятно что я хочу получить. Как сделать эту конструкцию правильной? На входе функции model и tableView для неё. Код: int i; Спасибо за советы! Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: Вячеслав от Октября 17, 2007, 22:59 QSignalMapper не катит ?
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: Racheengel от Октября 18, 2007, 01:13 QActionGroup?
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: Kainit от Октября 18, 2007, 09:09 В рамках приведённого фрагмента кода можно сделать не очень симпатично, но вполне разумно
т.е., немного схитрим в реализации (но гарантируя что сендерами сигналов будут только QAction-ы) Код: MyTableView::hideColumn () 1. Я не предлагаю реализивывать скрытие и появление колонок 2-мя методами, разумнее сделать 1 2. Предлагаемый способ не очень красив, т.к. требует жесткого сендера... Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 18, 2007, 17:37 действительно для этой цели везде рекомендуют синалМаппер, но что-то у меня ничего не происходит, никаких сообщений тоже не вылазиет.
Код: int i; Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: Вячеслав от Октября 19, 2007, 10:56 signalMapper->setMapping(action, ui.tableView->isColumnHidden(i)); Эт шо ?Что может быть не так? Код: void setMapping ( QObject * sender, int id ) signalMapper->setMapping(action, i); ? Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 19, 2007, 19:05 Вячеслав, спасибо за помощь!
Действительно колонки стали убираться. Но тут опять засада :) Убираться-то они убираются (через hideColumn), а ведь еще нужно чтобы появлялись... а это надо вызывать уже showColumn. Как же завязать bool значение triggered(bool) от action`a на скрытие и раскрытие ума не приложу to Racheengel - а как этот ActionGroup может помочь? to Kainit - переопределять ничего не хотелось бы, ведь нужно чтобы это была функция, которую можно будет прилепить к любому QTableView Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: ритт от Октября 19, 2007, 22:24 setColumnHidden(int, bool) не поможет?
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 20, 2007, 09:59 Если бы знать еще как его прикрутить :)
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 22, 2007, 20:12 Насколько я заметил - ни в одной KDE`ной проге нет реализации такой вот с виду простой штуки. В Amarok например появляется пункт меню "Скрыть колонку" и "Показать меню -> [Список скрытых колонок]"
В konqueror примерно тоже самое, через отдельный диалог с ListWidget`ом. Вообщем везде жутко неудобно! В виндовом Explorer однако такая штука есть и работает отлично... Обидно :( Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: ритт от Октября 22, 2007, 22:55 у меня в проекте сейчас реализовано то, о чём ты говоришь. плюс данное меню с тиарОфф. всё красиво и юзабельно...пока кол-во столбцов не превышает определённый лимит = (высота экрана/высоту элемента меню) - что-то порядка двадцати - двадцати пяти пунктов меню. если превышает, вся юзабельность превращается в напряг, особенно при включенном тиарОфф!
решил избавиться от этой менюхи в пользу доклета с ЛистВиджетом. если у тебя столбцов мало, проблемы нет. Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 23, 2007, 19:02 Не подскажешь как ты этого добился?
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: ритт от Октября 23, 2007, 21:08 чего добился? дерева? или меню с тиарОфф'ом?
у тебя вьюха родная или унаследованная? Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 23, 2007, 22:28 я не особо понял, что такое ТиарОФФ? :)
Интересует как сделал выпадающее меню с чекбоксами, чтобы они отрабатывали скрытие и открытие - аналогично тому, как это в виндовом експлорере сделано (при обзоре файлов и нажатии правой кнопкой по заголовку). А с listView впринципе всё понятно... Вьюха стандартная. Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: fox от Октября 24, 2007, 13:46 Доброго дня! Делал подобную вещь но меню выпадала только при клике по последней колонке таблицыСобственно сабж! Как делается на TableView такая штука, чтобы пользователь мог влючить или отключить показ колонок в таблице? Если такой вариант устроит приведу код :) Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: ритт от Октября 24, 2007, 17:07 Код: ... 5 рублей (или пИво) Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 24, 2007, 18:10 хер, с меня теперь точно 5 рублей или пиво! :)
Спасибо за действительно рабочий вариант этой штуки. Но опять же это нужно наследовать TableView, а я, как писал выше, добиваюсь сделать функцию, которая бы возвращала QMenu (получая на входе модель и вью), который уже вешается на любой TableView. Наследоваться не всегда есть возможность - например при использовании форм, сделанных в QtDesigner. Радует, конечно, create more, но еще хотелось бы и code less :) to fox - приведи пожалуйста, чем больше вариантов, тем тема будет больше раскрыта! Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: fox от Октября 24, 2007, 18:37 to fox - приведи пожалуйста, чем больше вариантов, тем тема будет больше раскрыта! Вообщем хотел сделать почти то же самое только для управления показом/скрытием колонок использовал отдельную колонкуПо умолчанию последние где в заголовке нет текста только иконка Соответственно для начала сигнал Код: QHeaderView * head = horizontalHeader(); а уже в обработчике проверка на то что клацнули на нужную мне колонку Код: if(logicalIndex == Observer::MenuTerminalSection){ Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: ритт от Октября 24, 2007, 19:05 стэлз, смотри код внимательно - все используемые методы публичные. код можно использовать как внутри вьюхи, так и снаружи
Название: Re: Выпадающее меню на HeaderView с перечнем чекбоксов с названиями колонок Отправлено: stealth от Октября 25, 2007, 21:50 to fox - хороший вариант, особенно хорошо, что достаточно просто реализуется
to xep - спасибо! угу, чёт я название класса просто увидел TableView и подумал, что ты его наследуешь от QTableView. Всё заработало! Вот что получилось в итоге (по большей части код от "xep" :) ): Код: // Заголовочный файл Код: // А так вот использовать в программе: Код: ... Большое спасибо всем, кто принял участие в данном обсуждении! |