Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: sidsukana от Январь 13, 2013, 15:13



Название: QPropertAnimation эффект появления/исчезновения
Отправлено: 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() - все будет одинакого. Не могу сделать все тоже в обратном порядке, чтобы плавно исчезало. Помогите пожалуйста.


Название: Re: QPropertAnimation эффект появления/исчезновения
Отправлено: Bepec от Январь 13, 2013, 15:21
Ты show вызываешь сразу по началу эффекта.

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

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



Название: Re: QPropertAnimation эффект появления/исчезновения
Отправлено: sidsukana от Январь 13, 2013, 15:28
Ну я стартовые и конечные значения делал наоборот (только это не помогает :) ), direction менял.

Или я вас не так понял, нужно вначале скрыть его, а потом запустить анимацию? Можете продемонстрировать код для исчезновения виджета?)


Название: Re: QPropertAnimation эффект появления/исчезновения
Отправлено: Old от Январь 13, 2013, 15:46
hide нужно вызывать, только после завершения анимации.
Например, по сигналу.


Название: Re: QPropertAnimation эффект появления/исчезновения
Отправлено: sidsukana от Январь 13, 2013, 15:56
Спасибо, получилось!