2012-10-04 3 views
0

버튼 클릭 이벤트로 애니메이션을 만들려고합니다. 그러나 어떻게 든 애니메이션이 작동하지 않습니다. 나는 Qt는 참조 문서를 언급했지만, 문제를 일으키는 근본 원인을 찾을 수 없습니다Qt 4.7.4 QPropertyAnimation이 작동하지 않습니다.

아래 예제 코드입니다 : 위의 구현 아무것도 클릭 이벤트에서 일어나는되지 않습니다와

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

. 제안 사항, 감사. 당신이 그것을 할당 당신이 다음 m_AnimatedWidget에 액세스

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

첫째 :

답변

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

이것이 해결책이라면이 답을 올바른 것으로 표시하십시오. – stackunderflow

2

이 잘못 보인다?

세그먼트 오류와 같은 오류가 발생하면 항상 디버거에서 프로그램을 실행하십시오. 이 오류는 오류의 줄에서 멈추었 기 때문에 쉽게 찾을 수있었습니다.

+0

할당에 대해 매우 바보입니다. 디버거에서 프로그램을 실행하고 있었지만 오류가 발생하지 않았습니다. 코드를 수정했지만 여전히 문제가 지속됩니다. 애니메이션이 없습니다. – DNamto

0

m_ani->setDuration(500);

setDuration() 인수 밀리 초로 표현된다. 테스트 할 때 반 초 이상을 두어야합니다.

관련 문제