Название: Можно ли сделать тривьюху без наследования? Отправлено: Авварон от Ноябрь 14, 2010, 00:21 Мне хочется сделать виджет древесной структуры (то есть QTreeView в нем будет), однако внешнее АПИ не должно предоставлять доступ ко всем ф-иям QTreeView. Примерное решение - отнаследоваться от QAbstractScrollArea, хранить указатель на QTreeView в себе и перебрасывать виртуал методы скроллареи на вьюху. Однако тут видимые косяки как минимум косяк с фокусом - он будет на внутреннем виджете, а не на внешнем. Можно ли это как-то обойти? Если запретить фокус полиси для вьюхи и пробросить keyBoardEvent на нее, то она будет как бы "не в фокусе" - серая - тоже нехорошо.
Название: Re: Можно ли сделать тривьюху без наследования? Отправлено: GreatSnake от Ноябрь 14, 2010, 00:50 И для чего такой изврат?
setFocusProxy? Название: Re: Можно ли сделать тривьюху без наследования? Отправлено: Авварон от Ноябрь 14, 2010, 01:46 Вау, не знал, спасибо:) А еще косяки могуть быть, помимо мильена проброса методов?
Название: Re: Можно ли сделать тривьюху без наследования? Отправлено: kirill от Ноябрь 15, 2010, 11:00 Сделать защищенное наследование
class TV : protected QTableView { public: TV(){} }; попытка использовать TV tv; tv.rowAt(0); 1>test.cpp(156) : error C2247: 'QTableView::rowAt' not accessible because 'TV' uses 'protected' to inherit from 'QTableView' Название: Re: Можно ли сделать тривьюху без наследования? Отправлено: Авварон от Ноябрь 15, 2010, 11:11 Ага, а еще нам его не дадут положить в лайаут, тк QWidget - "недостижимый предок"
Вообще отнаследовался от QWidget - у скроллареи нет полезных паблик методов и положил вьюху на этот виджет. Фокус поправил, как посоветовали. Вроде косяков пока нет. |