首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPropertyAnimation失效

QPropertyAnimation失效
EN

Stack Overflow用户
提问于 2018-04-16 02:18:10
回答 1查看 278关注 0票数 1

我的动画并不像我所期望的那样在这个QPushButton上工作。

这是我的mainwindow.cpp,因为你可以在这里看到什么特别奇怪的东西。在运行时,按钮会如人们所预料的那样出现。我并没有想到什么特别的动作。我只想看看我是否把一切都安排好了。就像现在的情况一样,按钮没有增长,也没有移动。这里奇怪的是,如果我注释掉setShape.start(),它将默认返回到UI文件中指定的大小。

到目前为止,我唯一的猜测是,我的MainWindow对象在构造函数(包含动画)运行完之后才会显示出来。如果是这样的话,我想知道我能做些什么来绕过它。

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QPushButton>
#include <QPropertyAnimation>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPropertyAnimation setShape(ui->pushButton, "geometry");
    setShape.setDuration(1000);
    setShape.setStartValue(QRect(500,300,500,500));
    setShape.setEndValue(QRect(800,400,500,500));
    setShape.start();


}

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

这是我的main.cpp

代码语言:javascript
复制
#include "mainwindow.h"
#include <QApplication>
#include <QPropertyAnimation>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

这是一个最基本的动画,所以我希望我的直觉是正确的,或者我犯了一个愚蠢的错误。无论哪种方式,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 02:27:55

局部变量在执行完其作用域后被删除,这就是setShape发生的情况,当构造函数完成执行时,它就会被删除,您需要做的是创建一个指针,以便对它进行维护,并建立对DeleteWhenStopped的销毁策略。

代码语言:javascript
复制
QPropertyAnimation *setShape = new QPropertyAnimation(ui->pushButton, "geometry");
setShape->setDuration(1000);
setShape->setStartValue(QRect(500,300,500,500));
setShape->setEndValue(QRect(800,400,500,500));
setShape->start(QPropertyAnimation::DeleteWhenStopped);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49848782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档