gpt4 book ai didi

qt - QPropertyAnimation 不起作用

转载 作者:行者123 更新时间:2023-12-01 17:20:44 26 4
gpt4 key购买 nike

我正在尝试在 Qt 桌面应用程序中测试动画。我刚刚从帮助中复制了示例。单击按钮后,新按钮仅出现在左上角,没有动画(甚至结束位置也是错误的)。我错过了什么吗?

Qt 5.0.1、Linux Mint 64 位、GTK

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPropertyAnimation>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_pushButton_clicked()
{
QPushButton *button = new QPushButton("Animated Button", this);
button->show();

QPropertyAnimation animation(button, "geometry");
animation.setDuration(10000);
animation.setStartValue(QRect(0, 0, 100, 30));
animation.setEndValue(QRect(250, 250, 100, 30));

animation.start();
}

编辑:已解决。动画对象必须作为全局引用。例如,在 private QPropertyAnimation *animation 部分。然后 QPropertyAnimation = New(....);

最佳答案

您不需要专门创建一个槽来删除mAnimation变量。如果您使用QAbstractAnimation::DeleteWhenStopped,Qt 可以为您做到这一点:

QPropertyAnimation *mAnimation = new QPropertyAnimation(button, "geometry");
mAnimation->setDuration(10000);
mAnimation->setStartValue(QRect(0, 0, 100, 30));
mAnimation->setEndValue(QRect(250, 250, 100, 30));

mAnimation->start(QAbstractAnimation::DeleteWhenStopped);

关于qt - QPropertyAnimation 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com