0

ボタンクリックイベントでアニメーションを作成しようとしています。しかし、どういうわけかアニメーションは機能していません。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();
}

上記の実装では、クリックイベントでは何も起こりません。任意の提案、ありがとう。

4

3 に答える 3

2

これは間違っているように見えます:

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

最初にアクセスしm_AnimatedWidget 、次に割り当てますか?

セグメンテーション違反などのクラッシュが発生した場合は、常にデバッガーでプログラムを実行してください。エラーの行で停止していたので、このエラーを非常に簡単に見つけるのに役立ちました。

于 2012-10-04T09:29:28.727 に答える
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();
}
于 2012-10-04T09:47:07.813 に答える
0

m_ani->setDuration(500);

setDuration()引数はミリ秒で表されます。テストするときは、おそらく0.5秒以上置く必要があります。

于 2012-10-04T09:42:56.777 に答える