Russian Qt Forum
Ноябрь 24, 2024, 23:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPropertAnimation эффект появления/исчезновения  (Прочитано 4720 раз)
sidsukana
Гость
« : Январь 13, 2013, 15:13 »

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

Код:
QGraphicsOpacityEffect* fade_effect = new QGraphicsOpacityEffect(m_userValues);
    QPoint point = mapFromGlobal(cursor().pos());
    m_userValues->setGeometry(point.x(), point.y(), 250, 250);
    m_userValues->setGraphicsEffect(fade_effect);
    QPropertyAnimation *animation = new QPropertyAnimation(fade_effect, "opacity");
    animation->setEasingCurve(QEasingCurve::InOutQuad);
    animation->setDuration(500);
    animation->setStartValue(0.01);
    animation->setEndValue(1.0);
animation->start(QPropertyAnimation::DeleteWhenStopped);
m_userValues->setVisible(true);

Вместо m_userValues->setVisible(true); можено show() - все будет одинакого. Не могу сделать все тоже в обратном порядке, чтобы плавно исчезало. Помогите пожалуйста.
Записан
Bepec
Гость
« Ответ #1 : Январь 13, 2013, 15:21 »

Ты show вызываешь сразу по началу эффекта.

Соответственно схема - появился виджет и ему начинает прозрачность уменьшаться.

А обратно смотри что будет - исчезает виджет и ему начинает прозрачность прибавляться Веселый

Записан
sidsukana
Гость
« Ответ #2 : Январь 13, 2013, 15:28 »

Ну я стартовые и конечные значения делал наоборот (только это не помогает Улыбающийся ), direction менял.

Или я вас не так понял, нужно вначале скрыть его, а потом запустить анимацию? Можете продемонстрировать код для исчезновения виджета?)
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Январь 13, 2013, 15:46 »

hide нужно вызывать, только после завершения анимации.
Например, по сигналу.
Записан
sidsukana
Гость
« Ответ #4 : Январь 13, 2013, 15:56 »

Спасибо, получилось!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.041 секунд. Запросов: 22.