QPropertyAnimation 不工作
QPropertyAnimation not functioning
我的动画在这个 QPushButton 上的效果与我预期的不一样。
这是我的 mainwindow.cpp,因为您在这里看不到任何特别奇怪的地方。在 运行 时间,该按钮如人们所期望的那样出现。我没有任何特别的动作。我只是想看看我是否正确设置了所有内容。由于现在的情况,按钮不会增长或移动。这里有什么奇怪的是,如果我注释掉 setShape.start() 它默认返回到 UI 文件中指定的大小。
到目前为止,我唯一的猜测是我的 MainWindow 对象只有在其构造函数(包含动画)完成 运行 之后才会显示。如果是这种情况,我想知道我能做些什么来解决它。
#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
#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();
}
这是一个可以创建的最基本的动画,所以我希望我对此的直觉是正确的,或者我犯了一个愚蠢的错误。无论哪种方式,任何帮助都将不胜感激。
局部变量执行完它的作用域就被删除了,setShape就是这样,构造函数执行完就被删除了,你要做的就是创建一个指针,这样就可以维护和建立销毁政策 DeleteWhenStopped
:
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);
我的动画在这个 QPushButton 上的效果与我预期的不一样。
这是我的 mainwindow.cpp,因为您在这里看不到任何特别奇怪的地方。在 运行 时间,该按钮如人们所期望的那样出现。我没有任何特别的动作。我只是想看看我是否正确设置了所有内容。由于现在的情况,按钮不会增长或移动。这里有什么奇怪的是,如果我注释掉 setShape.start() 它默认返回到 UI 文件中指定的大小。
到目前为止,我唯一的猜测是我的 MainWindow 对象只有在其构造函数(包含动画)完成 运行 之后才会显示。如果是这种情况,我想知道我能做些什么来解决它。
#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
#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();
}
这是一个可以创建的最基本的动画,所以我希望我对此的直觉是正确的,或者我犯了一个愚蠢的错误。无论哪种方式,任何帮助都将不胜感激。
局部变量执行完它的作用域就被删除了,setShape就是这样,构造函数执行完就被删除了,你要做的就是创建一个指针,这样就可以维护和建立销毁政策 DeleteWhenStopped
:
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);