Название: Постепенное скрытие QLabel Отправлено: deaks от Декабрь 28, 2010, 11:09 Здравствуйте,
посоветуйте, как можно реализовать постепенное иcчезновение QLabel. Грубо говоря чтобы по таймеру в течении пары секунд QLabel становился полностью прозрачным Название: Re: Постепенное скрытие QLabel Отправлено: alexman от Декабрь 28, 2010, 11:21 1. Делай наследника от QLabel.
2. void QWidget::paintEvent ( QPaintEvent * event ) [virtual protected] 3. void QObject::timerEvent ( QTimerEvent * event ) [virtual protected] Название: Re: Постепенное скрытие QLabel Отправлено: merke от Декабрь 28, 2010, 11:40 http://qt.ucoz.net/blog/mozhno_regulirovat_prozrachnost_ljubogo_okoshka_s_pomoshhju_metoda/2009-10-18-31
+ QTimer Название: Re: Постепенное скрытие QLabel Отправлено: deaks от Декабрь 28, 2010, 11:51 http://qt.ucoz.net/blog/mozhno_regulirovat_prozrachnost_ljubogo_okoshka_s_pomoshhju_metoda/2009-10-18-31 + QTimer хм, почему-то QLabel с текстом не меняет прозрачность. Как быть? alexman, могли бы вы чуть подробнее расписать свой способ? Название: Re: Постепенное скрытие QLabel Отправлено: alexman от Декабрь 28, 2010, 23:23 alexman, могли бы вы чуть подробнее расписать свой способ? 1. Заводишь переменную double opacityFactor; //opacityFactor in [0;1], init value of opacityFactor = 1. 2. Запускаешь таймер и в void timerEvent ( QTimerEvent * event ) изменяешь значение opacity и вызываешь update(). 3. В void paintEvent ( QPaintEvent * event ) рисуешь текст, с учетом измененного значения alpha (alpha умножаешь на opacityFactor). Название: Re: Постепенное скрытие QLabel Отправлено: yaroslav429 от Декабрь 29, 2010, 04:15 По моему, есть способы попроще, нежели создание наследника. Правда для предложенного мной варианта нужна Qt 4.7.
И так.. Создаем свойство alpha для окна, где лабел. Это свойство будет иметь отношение только к лабелу. Код: Q_PROPERTY(int alpha READ alpha WRITE setAlpha) И в setAlpha с помощью setStyleSheet указываем color лабела Код: ui->label->setStyleSheet(QString("color:rgba(100, 100, 100 , %1)").arg(a)); И вешаем это всё на QPropertyAnimation Код: QPropertyAnimation *propAnimationFade; Для наглядности - пример во вложениях =) Название: Re: Постепенное скрытие QLabel Отправлено: deaks от Декабрь 29, 2010, 10:35 alexman, yaroslav429,
спасибо, друзья! |