0

我在 Qt Designer 中创建了一个带有单个按钮的新 QWidget,并将其添加到源代码中:

void MainWindow::startAnimation()
{
    QPropertyAnimation animation(ui->pushButton, "geometry");
    animation.setDuration(3000);
    animation.setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));
    animation.setEndValue(QRect(this->x(),this->y(), 10,10));
    animation.setEasingCurve(QEasingCurve::OutBounce);
    animation.start();
}

void MainWindow::on_pushButton_clicked()
{
    startAnimation();
}

当我单击按钮时,它会消失并且没有动画。

4

1 回答 1

2

animation超出范围并在startAnimation()函数结束时自动删除。这就是为什么什么都没有发生。使用信号和槽创建QPropertyAnimation实例new并稍后将其删除,如下所示:finisheddeleteLater

void MainWindow::startAnimation()
{
    QPropertyAnimation* animation = new QPropertyAnimation(ui->pushButton, "geometry");
    ...
    connect(animation, SIGNAL(finished()), animation, SLOT(deleteLater()));
    animation->start();
}
于 2013-05-25T15:58:41.167 回答