0

マウスが親ウィジェットの上に置かれたときにフレームを表示/非表示にする小さなアニメーションがあります (「MyWidget」の下のコード スニペット)。

アニメーションは、フレームの maximumWidth プロパティを変更するだけで、フレームが「スライドイン効果」として見えるようになります。(フレーム自体はグリッド レイアウトで配置されます。)

私の質問は、アニメーションを遅らせて開始する方法ですか? 例: マウスの leaveEvent の 500 ミリ秒後に開始するため、スライド アウト効果が遅延し、すぐには開始されませんでした。

void MyWidget::enterEvent( QEvent * event )
{
    //slide-in effect
    QPropertyAnimation *animation = new QPropertyAnimation(ui.frame_buttons, "maximumWidth");
    animation->setDuration(1000);
    animation->setStartValue(ui.frame_buttons->maximumWidth());
    animation->setEndValue(100);
    animation->setEasingCurve(QEasingCurve::InOutQuad);

    animation->start();
}

void MyWidget::leaveEvent( QEvent * event )
{
    //slide-out effect
    QPropertyAnimation *animation = new QPropertyAnimation(ui.frame_buttons, "maximumWidth");
    animation->setDuration(1000);
    animation->setStartValue( ui.frame_buttons->maximumWidth() );
    animation->setEndValue(0);
    animation->setEasingCurve(QEasingCurve::InOutQuad);

    //delay start() for a small amount of time
    animation->start();
}
4

1 に答える 1