Название: Как в делегате не показывать строку? Отправлено: majatu от Июнь 05, 2009, 13:03 Есть модель TableView . Привязн делегат. Как сделать так, чтобы определенная строка не показывалась? если не вызывать paint, то она просто пустая, а мне нужно, чтобы строки не было
Название: Re: Как в делегате не показывать строку? Отправлено: ритт от Июнь 05, 2009, 13:38 TableView - странное название для модели.
делегат тут ни при чём. читать про прокси-модели. Название: Re: Как в делегате не показывать строку? Отправлено: roman.ks от Июнь 10, 2009, 09:46 Чтобы скрыть строку см. в сторону QSortFilterProxyModel::filterAcceptsRow. Т.е. нужно создавать свой прокси. Вообще, прокси - штука очень мощная.
Название: Re: Как в делегате не показывать строку? Отправлено: developer от Июнь 10, 2009, 10:33 Код:
Название: Re: Как в делегате не показывать строку? Отправлено: developer от Июнь 10, 2009, 10:35 Забыл сказать, нужно свой делегат переопределить, и туда в метод paint добавить выше приведенный код.
Название: Re: Как в делегате не показывать строку? Отправлено: spirit от Июнь 10, 2009, 10:50 Забыл сказать, нужно свой делегат переопределить, и туда в метод paint добавить выше приведенный код. в такм случае, проще все это делать в drawDisplay делегата и не лезть в paint, imho.Название: Re: Как в делегате не показывать строку? Отправлено: developer от Июнь 10, 2009, 10:54 Цитировать в такм случае, проще все это делать в drawDisplay делегата и не лезть в paint, imho. Спасибо, хорошее замечание :)Название: Re: Как в делегате не показывать строку? Отправлено: ритт от Июнь 10, 2009, 11:14 ох и изврат...
Название: Re: Как в делегате не показывать строку? Отправлено: spirit от Июнь 10, 2009, 11:16 ох и изврат... согласен, прокси модель -- это самое оно.Название: Re: Как в делегате не показывать строку? Отправлено: roman.ks от Июнь 11, 2009, 10:53 Прокси модель и делегаты вообще-то для разных вещей предназначены.
Делегат - для отрисовки айтемов ( в данном примере ) Прокси - для того, чтобы вообще скрыть строку. Т.е. в случае делегата Вы не сможете скрыть строку. Ну конечно же и делегаты и прокси не только для вышесказанного предназначены. П.С. Скрыть это не означает "залить" ее белым :-) Название: Re: Как в делегате не показывать строку? Отправлено: mugabe от Июнь 11, 2009, 11:04 Т.е. в случае делегата Вы не сможете скрыть строку. Ну почему, можно в sizeHint вернуть QSize(0,0) :) Целесообразность этого - другой вопрос :) Название: Re: Как в делегате не показывать строку? Отправлено: spirit от Июнь 11, 2009, 11:08 Т.е. в случае делегата Вы не сможете скрыть строку. Ну почему, можно в sizeHint вернуть QSize(0,0) :) Целесообразность этого - другой вопрос :) Название: Re: Как в делегате не показывать строку? Отправлено: ритт от Июнь 11, 2009, 11:57 представляю фильтрацию строк на основе такого делегата...
...имеется 1К строк - нужно скрыть каждую нечётную :) Название: Re: Как в делегате не показывать строку? Отправлено: Danila_Bagrofff от Январь 10, 2012, 15:05 Хотелось бы уточнить...
У меня есть модель, есть набор данных, отображаемых в QTableView. В зависимости от опций программы нужно отображать то одну часть данных, то другую. Это необходимо делать только через proxy-модель? Нельзя ли просто в модели сделать так, чтобы данная строка с данными не отображалась? В data() и в headerData() легко для таких строк возвращать Variant(), но вот пустые строки все равно отображаются... Может, можно как-то обойтись без прокси модели? Просто не отображать нужные строки. Название: Re: Как в делегате не показывать строку? Отправлено: andrew.k от Январь 10, 2012, 15:56 А зачем без нее обходиться? Прокси-модель то что тебе нужно, на сколько я понял из этого хитрого треда)
А подменять данные в отрисовке это страшнее придумать нельзя было) Плюс, если тебе действительно нужно подменять. На сколько я понимаю в прокси-модели можно переопределить метод data и уже в нем менять некоторые данные (которые нужно менять). Это если действительно нужно поле отображать пустым (типа строка пароля), а не скрыть строку целиком. |