Название: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Boris от Февраль 28, 2008, 18:14 Давно бьюсь над делемой: необходимо добиться подобия автофильтра в Excel'e/OpenOffic'e. Т.е. каким-то образом закрепить(сделать не прокручиваемой первую строчку) или вставить ComboBox в заголовок. У кого-нибудь есть наработки в этом направлении?
Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Вячеслав от Февраль 28, 2008, 18:47 Ну ой :( Я на такое не сподвигся - обошелся панелью сверху QTableWidget'a :( QHeaderView переписывать .... муууторно :(
Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: ритт от Февраль 28, 2008, 22:43 а я сподвигся :)
Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Вячеслав от Февраль 28, 2008, 23:37 Таки может поделишься кусочком ? ;)
Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: ритт от Февраль 29, 2008, 01:02 баш на баш :)
на самом деле это нечто комплексное, а не просто комбы в хидере включает перегруженный QHeaderView, перегруженную запатченную QSortFilterProxyModel и виджет для управления всем этим добром + перегруженный setColumnHidden в тэйблвтю, т.к. по непонятным причинам хайд колуменов осуществляется не из хидера, а из таблицы (в то время, как все остальные операции со столбцами производятся из хидервью) /* если я правильно помню */ так что, подумай ещё раз стоит ли связываться с моими поделками :) Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Boris от Февраль 29, 2008, 08:19 Может есть более простой способ? Может можно заставить tableWidget НЕ прокручивать первую строку? Я уже задавал этот вопрос здесь, мне сказали смотри на QAbstractItemView. Я смотрел смотрел, но ничего не высмотрел... Может тут есть какие наработки?.
xep ;D Может покажешь код (особливо QHeaderView интересует), если не жалко конечно. А мы может допилим чего, чем черт не шутит. Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Вячеслав от Февраль 29, 2008, 10:02 баш на баш :) Гы ;) А фиг его знает - не посмотришь ниасилишь ;) Может действительно имеет смысл сообща таблицу допилить .... так что, подумай ещё раз стоит ли связываться с моими поделками :) Я тут еще меееедленно думаю как-бы строку(в таблице) сделать из нескольких элементов ( как журнал проводок в 1с) ...... Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: vregess от Февраль 29, 2008, 13:46 Я тут еще меееедленно думаю как-бы строку(в таблице) сделать из нескольких элементов ( как журнал проводок в 1с) ...... а это как? что за строка из нескольких элементов Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Вячеслав от Февраль 29, 2008, 13:53 Млин, ну как-бы это на пальцах - одно поле под другим ;)
Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Boris от Август 01, 2008, 13:13 Константин, вы можете показать только кусок кода связанный с HeaderView (да общую стратегию я понял относледоваться и вставить), затруднения вызывает как раз вторая часть как корректно вставлять? Много гуглил по данному вопросу вопросов подобных много а ответов нет :-[
Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: ритт от Август 01, 2008, 23:00 я уж и забыл про эту ветку...
"кусок кода, связанный с хидервью" - это 30кб текста суть проста - перегружаешь хидервью::пэинтСекшн и делаешь там сетГеометри связанного с секцией комбобокса в самом начале у меня так и было, но сразу же отказался от такой херни из-за кучи мелких кривуль, выползших из такой простоты сейчас в углу секции рисуется кнопочка по типу комбовской "попап", перегружены методы отлова событий мыши - осуществляет перерисовку кнопочки для соответствующих состояний, а непосредственно по клику на "кнопку" (на самом деле ведь это тупо пиксмап) происходит отображение листвью в режиме попап, в котором у нас список значений для фильтрации. список строится из данных исходной модели, возвращаемых для фильтерРоле... всё это счастье связано сигналами с перегруженной сортфильтерпроксимоделью, которая принимает несколько фильтров - по регэкспу на столбец код приводить не буду, т.к. это наколенная работа и мне тупо стыдно показывать _это_ когда будет достаточно времени, отшлифую до вменяемого состояния и где-нибудь выложу...под "пивной лицензией" :) Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Boris от Август 02, 2008, 07:54 Кнопочку нарисовать... попробую. А отобразить строчку (текущую выбранную) из фильтра тоже что-то отрисовывать надо?
Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: ритт от Август 02, 2008, 08:11 в том-то и дело, что рисовать на хидере по-сути негде (тупо места не хватает. когда вначале комбик рисовал, увеличивал высоту хидера вдвое - эффект весьма убогий). а в моём случае может быть и не одна строчка, а список масок для поиска (рэгекспы поддерживают списки через "(|)" ) - поэтому вместо рисования просто подсвечиваю цветом секции, у которых фильтр непустой, а в тултипе/статустипе этой секции вывожу подробно что за фильтр установлен
см. скрин http://prog.org.ru/forum/index.php/topic,6653.msg37899.html#msg37899 - видно убогие стрелочки на каждой секции. на скрине фильтры не установлены, но могли бы...просто представь :) Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: Boris от Август 02, 2008, 08:47 >поэтому вместо рисования просто подсвечиваю цветом секции, у которых фильтр непустой
т.е. текущее значение фильтра данной ячейки увидеть нельзя не щелкнув по кнопочке? Я уже спрашивал тут выше: может можно просто закрепить несколько первых строк tableWiew'а... понятно что как-то через QAbstractItemView но я так и не переварил как это можно. :-[ Название: Re: CheckBox/ComboBox в Header'e TableWidget'a Отправлено: ритт от Август 02, 2008, 09:20 > т.е. текущее значение фильтра данной ячейки увидеть нельзя не щелкнув по кнопочке?
можно не кликать, а просто подвести и прочитать в тултипе/статустипе > Я уже спрашивал тут выше: может можно просто закрепить несколько первых строк tableWiew'а... понятно что как-то через QAbstractItemView но я так и не переварил как это можно. :-[ QAbstractItemView - наследние скроллбокса. ответь сам на свой вопрос: может можно просто закрепить несколько первых пикселей скроллбокса чтобы они не прокручивались, а остальное прокручивалось? например, можно сделать обманку - как будто первая строка зафиксирована: сместить во вьюхе все строки на +1, а над нулевой строкой зафиксировать виджет, внешне похожий на строку вьюхи, но с "альтернативным" содержимым можно ещё побаловаться с QAbstractItemView::verticalOffset()...но я, честно говоря, не помню _как_ оно фактически влияет на геометрию вьюхи |