Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Caduceus от Июль 26, 2011, 12:55



Название: Как узнать в QGraphicsScene,что View ресайзнулся?
Отправлено: Caduceus от Июль 26, 2011, 12:55
Необходимо перестраивать айтемы при ресайзе QGraphicsView. Как в соответствующей сцене узнать об этом событии, не переопределяя QGraphicsView (ради одной функции не хочется классы плодить)?


Название: Re: Как узнать в QGraphicsScene,что View ресайзнулся?
Отправлено: GreatSnake от Июль 26, 2011, 13:01
Никак. Да и идеологически это не нужно.
Зачем модели знать, что как-то изменилось представление, которых, кстати, может быть несколько.
Зачем вообще менять содержимое сцены, если меняется представление?


Название: Re: Как узнать в QGraphicsScene,что View ресайзнулся?
Отправлено: Caduceus от Июль 26, 2011, 13:04
Хорошо, может я что-то не так делаю
Тогда спрошу по-другому.

У меня айтемы - это графики, они располагаются вертикально друг под другом. При горизонтальном ресайзе окна эти графики необходимо перестроить (или более детализированно при расширении, или упростить при сужении).
Вот как сделать так, чтобы айтемы автоматически расширялись под всю ширину вида и каждый айтем знал об этом и перестраивал картинку своего графика?


Название: Re: Как узнать в QGraphicsScene,что View ресайзнулся?
Отправлено: GreatSnake от Июль 26, 2011, 13:18
Имхо, в таком случае лучше всё самому рисовать без QGraphics.
Но, коли уже так сделано, то по-любому придётся перегружать QGraphicsView::resizeEvent() и уже из него испускать сигнал resized().
Меня, кстати, тоже это напрягает - тролли могли бы добавить это.


Название: Re: Как узнать в QGraphicsScene,что View ресайзнулся?
Отправлено: Makss от Июль 27, 2011, 11:27
eventFilter попробуйте