Qt 4.7.4 QPropertyAnimation не работает

Я пытаюсь добавить анимацию в событие нажатия кнопки. Но почему-то анимация не работает. Я сослался на справочные документы Qt, но не смог найти основную причину, вызывающую проблему

Ниже приведен пример кода:

void MainWindow::AnimationClick()
{
// define toolbar y movement positions for animation
TOOLBAR_Y_SHOWN = 0;
TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();
m_AnimatedWidget = new AnimatedWidget(this);

QPropertyAnimation *m_ani = new QPropertyAnimation(m_AnimatedWidget, "pos", this);

m_ani->setDuration(500);

m_ani->setEndValue(QPoint(m_AnimatedWidget->pos().x(), TOOLBAR_Y_HIDDEN));
m_ani->setEasingCurve(QEasingCurve::InBack);

m_ani->start();
}

С вышеупомянутой реализацией ничего не происходит в событии click.
Любые предложения, спасибо.

0

Решение

Это выглядит неправильно:

TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();
m_AnimatedWidget = new AnimatedWidget(this);

Сначала вы получаете доступ m_AnimatedWidget затем Вы выделяете это?

Когда вы получаете сбой, такой как ошибка сегментации, всегда запускайте вашу программу в отладчике. Это помогло бы вам найти эту ошибку довольно легко, поскольку она остановилась бы на линии ошибки.

2

Другие решения

m_ani->setDuration(500);

setDuration() аргумент выражается в миллисекундах. Вы, вероятно, должны уделять больше половины секунды, когда вы тестируете.

0

Я понял. Я не позволял m_AnimatedWidget показывать на экране.
Ниже отредактированный фрагмент.

void MainWindow::AnimationClick()
{
// define toolbar y movement positions for animation
TOOLBAR_Y_SHOWN = 0;
m_AnimatedWidget = new AnimatedWidget(this);
TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();QPropertyAnimation *m_ani = new QPropertyAnimation(m_AnimatedWidget, "pos", this);

m_ani->setDuration(5000);

m_ani->setEndValue(QPoint(m_AnimatedWidget->pos().x(), TOOLBAR_Y_HIDDEN));
m_ani->setEasingCurve(QEasingCurve::InBack);

m_ani->start();
m_AnimatedWidget->show();
}
0