在Qt中,如何以更平滑的方式执行隐藏操作?

时间:2014-08-22 08:14:56

标签: qt animation widget qt4

在Qt中,每当窗口小部件设置为隐藏时,我都希望以平滑的方式执行操作。

那有什么标准功能吗?

2 个答案:

答案 0 :(得分:1)

显示和隐藏按钮的示例:

void MainWindow::hideButton(){
    QGraphicsOpacityEffect* fade_effect = new QGraphicsOpacityEffect(this);
    ui->pushButton->setGraphicsEffect(fade_effect);
    QPropertyAnimation *animation = new QPropertyAnimation(fade_effect, "opacity");
    animation->setEasingCurve(QEasingCurve::InOutQuad);
    animation->setDuration(5000);
    animation->setStartValue(1);
    animation->setEndValue(0.01);
    animation->start(QPropertyAnimation::DeleteWhenStopped);
}

void MainWindow::showButton(){
    QGraphicsOpacityEffect* fade_effect = new QGraphicsOpacityEffect(this);
    ui->pushButton->setGraphicsEffect(fade_effect);
    QPropertyAnimation *animation = new QPropertyAnimation(fade_effect, "opacity");
    animation->setEasingCurve(QEasingCurve::InOutQuad);
    animation->setDuration(5000);
    animation->setStartValue(0.01);
    animation->setEndValue(1.0);
    animation->start(QPropertyAnimation::DeleteWhenStopped);
}

答案 1 :(得分:0)

使用animation framework并将几何图形设置为0,0的高度和宽度,恢复时只需将其设置回上一个高度和宽度值即可。您可以使用各种缓动效果,并使用一些代码示例。