Название: Установить виджет в QHeaderView Отправлено: SpiritFire от Декабрь 28, 2009, 21:36 Скажите, пожалуйста, каким образом можно по аналогии с QTableWidget добавить произвольный виджет в заголовок таблицы?
Может я туплю, но поиск по форуму не дал ничего кроме целого воза оффтопа о том, как нехорошо добавлять чекбокс в заголовок таблицы. Зачем это нужно: В заголовке таблицы есть выпадающее меню. Выпадающее меню управляет фильтром для таблицы. Меню-фильтр с чекбоксами написать не проблема, проблема в следующем - как добавить произвольную кнопку в заголовок? Также было бы неплохо (но это уже более сомнительный вариант) добавить туда "канцелярскую кнопку" которая при нажатии жестко закрепит на экране столбец (сделает независимым от горизонтального скроллинга). PS. Я видел, что у этого решения есть много сторонников и много противников. Плюсы и минусы отлично понимаю: - это мощный способ захламить заголовок таблицы при отсутствии чувства меры и светлой головы, - нестандартный контрол в заголовке может вызвать неприязнь. Особенно, если не продумать, когда он там нужен, когда нет. - есть люди, считающие, что любое отклонение от стандарта - это плохо. Практически согласен, но: если бы никто не отходил от стандарта на работу бы мы ездили в колесницах. Хотя с дуру, как известно, можно и + если нужен фильтр, но не хочется отдавать фильтру много места на экране это удачная идея: есть фильтр, который абсолютно не занимает места на экране + если сделать кнопку, которая прямо кричит "я фильтр, а не что иное" - люди легко догадаются, зачем это нужно Где это уже использовалось: * проводник Windows 7. Именно в таком виде. И нельзя не заметить, что в этом случае (проводник) это оптимальная фильтрация с точки зрения занимаемого места и "незагромождения" экрана. ИМХО, очень удобная, для отфильтрации трех экселевских документов из общей кучи в 50 файлов это более чем удобно. * семейство компонент-таблиц от Devexpress. У них таблицы судя по демкам перегруженные, но можно сделать лучше. * почта. В общем, вопрос в не в том, нужно ли это, и не в том, когда это нужно, а в том, каким образом это реализовать там, где требуется? ЗЗЫ. Прошу прощения за тучу букв, и может, слишком подробное описание -- вопрос описан очень подробно не потому, что я считаю участников форума не догадливыми (совсем наоборот), а лишь потому, что видел, что вопрос по сходной теме перерос в 4-х страничный флуд "а зачем?". Еще раз прошу - направьте, пожалуйста, "КАК", а зачем - это уже на моей ответственности. Название: Re: Установить виджет в QHeaderView Отправлено: crossly от Декабрь 28, 2009, 23:43 берем виджет... суем его в лэйаут... и делаем setLayout хидеру...
Название: Re: Установить виджет в QHeaderView Отправлено: SpiritFire от Декабрь 29, 2009, 13:15 Вы имеете ввиду QWidget::setLayout? Наверное вы меня не правильно поняли - мне не нужно вмето хидера или поверх него отрисовывать другой виджет. не нужно в определенную ячейку засунуть произвольный виджет. В случае отрисовки "его надо" поверх хидера появляется куча проблем с позиционированием и отображением текста заголовка.
Думаю, может использовать QTableWidget поверх QHeaderView - но как по мне это тоже не самое идеальное решение, так как в этом случае о цвете заголовка, управляемом стилями можно забыть. Название: Re: Установить виджет в QHeaderView Отправлено: Dendy от Декабрь 29, 2009, 16:38 crossly именно про это и говорил. После header->setLayout(...) кнопка в лейоуте разместится на QHeaderView и будет там жить. А её положение будет меняться из переопределённого метода в вашем лейоуте, который в зависимости от дополнительных параметров уже будет знать какой колонке эта кнопка принадлежит и тому подобное.
|