DNamto
DNamto

Reputation: 1362

Qt 4.7.4 QPropertyAnimation not working

I'm trying to have animation on a button click event. But somehow the animation is not working. I have referred the Qt reference docs, but could not find the root cause which is causing the issue

Below is sample code :

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();
}

With the above implementation nothing is happening on the click event. Any suggestions , Thanks.

Upvotes: 0

Views: 1214

Answers (3)

DNamto
DNamto

Reputation: 1362

I got it. I was not allowing the m_AnimatedWidget to show upon the screen. Below is the edited snippet.

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();
}

Upvotes: 0

UmNyobe
UmNyobe

Reputation: 22890

m_ani->setDuration(500);

setDuration() argument is expressed in milliseconds. You should probably put more than half a second when you are testing.

Upvotes: 0

Some programmer dude
Some programmer dude

Reputation: 409136

This looks wrong:

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

First you access m_AnimatedWidget then you allocate it?

When you get a crash, such as segmentation fault, always run your program in a debugger. It would have helped you find this error quite easy as it would have stopped on the line of the error.

Upvotes: 2

Related Questions