Как оживить прозрачность виджета в Qt4? - PullRequest
0 голосов
/ 14 октября 2010

Мне нужно анимировать прозрачность виджета. Мне кажется, что я должен использовать QPropertyAnimation . Но как я могу определить прозрачный виджет? Должен ли я использовать что-то , как это ?

Ответы [ 2 ]

8 голосов
/ 15 октября 2010

На ваш вопрос есть два дополнительных ответа, по крайней мере, с которыми я играл:

  1. Если вы хотите настроить анимацию непрозрачности окна верхнего уровня QWidget, вы можете использовать QPropertyAnimationот 0 до 1 в значении "windowOpacity".Возможно, вы захотите проверить точный синтаксис, поскольку я использую PyQt.
  2. Если вы хотите анимировать непрозрачность кнопки или текстовой метки, это свойство не будет работать, и вам нужно использовать QGraphicsWidgets.Они наследуют QGraphicsItem и поэтому имеют opacity.К сожалению, это означает использование прокси-виджетов QGrapgicsProxyWidget для синхронизации обычных виджетов с их аналогами графических виджетов, поскольку QGraphicsWidget не наследует QWidget.Чтобы узнать больше, посмотрите Примеры инфраструктуры анимации , в частности конечный автомат для использования виджетов прокси.

Для windowOpacity анимаций:

QPropertyAnimation animate = new QPropertyAnimation(this, "windowOpacity", this);

animate.setDuration(100); animate.setStartValue(1); animate.setEndValue(0); animate.start();

Это будет работать только в системах, поддерживающих какое-либо композитное расширение.

Надеюсь, это поможет!

0 голосов
/ 14 октября 2010

Вы можете попробовать использовать свойство windowOpacity в QWidget. Если это не сработает, вам может потребоваться определить собственное свойство и использовать его в событии рисования для вашего виджета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...