Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Гурман от Октябрь 10, 2016, 18:18



Название: QGraphicsEffects не влияют на QGraphicsProxyWidget?
Отправлено: Гурман от Октябрь 10, 2016, 18:18
На сцену с помощью QGraphicsProxyWidget кидаю QWidget (выбранный в дизайнере). Затем соответствующему айтему сцены с помощью setGraphicsEddect() задаю эффекты, все четыре встроенные - Blur, Opacity, Colorize и Shadow. Всё по документации. Код выполняется, все значения правильные. Появляется только Shadow - то есть, то, что есть вокруг айтема. Сам виджет не изменяется - ни прозрачности, ни размытия, ни окраски. Даже начал подозревать, что тени не появляются на других виджетах, привязанных к прокси-айтемам, и лежащих под айтемом с тенью. Но нет - эти тени работают нормально.

Кто-нибудь сталкивался с этим? Может я что-то упустил?


Название: Re: QGraphicsEffects не влияют на QGraphicsProxyWidget?
Отправлено: Old от Октябрь 10, 2016, 18:31
setGraphicsEffect задает только один эффект. Если вы несколько раз вызвали этот метод, то применится последний назначенный эффект.


Название: Re: QGraphicsEffects не влияют на QGraphicsProxyWidget?
Отправлено: Гурман от Октябрь 10, 2016, 19:12
Да, уже увидел... Есть быстрый ответ на вопрос? - как задать несколько эффектов одновременно?


Название: Re: QGraphicsEffects не влияют на QGraphicsProxyWidget?
Отправлено: Old от Октябрь 10, 2016, 19:51
Да, уже увидел... Есть быстрый ответ на вопрос? - как задать несколько эффектов одновременно?
Быстрого нет.
Я бы попробовал сделать свой эффект миксер, на основе класса QGraphicsEffect, который бы получал список эффектов и применял их последовательно.


Название: Re: QGraphicsEffects не влияют на QGraphicsProxyWidget?
Отправлено: Гурман от Октябрь 10, 2016, 20:15
Да, увы. Везде пишут, что если нужно несколько эффектов, надо делать свой обработчик. Жадины в Qt, могли бы упаковать применение нескольких эффектов к одному айтему. Если разработчик проворный навешает слишком много - сам дурак. Мне нужны всего две пары - одновременно тень и окраска, и одновременно размытие и прозрачность. Если с окраской, размытием и прозрачностью более-менее ясно, они внутри геометрии работают, то с тенью не совсем - она вне геометрии, влияет на другие айтемы. Отдельно надо разбираться. Но придётся это отложить, увы.