【问题标题】:QPropertyAnimation not functioningQPropertyAnimation 不起作用
【发布时间】:2018-04-16 02:18:10
【问题描述】:

我的动画在这个 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();
}

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

【问题讨论】:

  • 显示你的 .ui..
  • 你用过什么布局吗?
  • 我没有使用任何布局进行格式化。想象一下,你刚刚创建了一个默认的 Qt 应用程序——这基本上就是我在这里使用的。
  • 另外,eyllanesc- 显示 ui 是什么意思?
  • 我指的是扩展名为.ui的设计文件,反正按照你说的没必要,试试我提出的解决方案。

标签: c++ qt qt5 qpropertyanimation


【解决方案1】:

一个局部变量在执行完其作用域后被删除,这就是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);

【讨论】:

  • 好吧,实际上可能不是。以为它起作用了,但它仍然不动。我很抱歉。
  • @Carl 它对我有用,你可以分享 mainwindow.ui
  • @Carl 你确定,你添加了任何组件吗?我觉得很奇怪
  • 在那张纸条上,我刚才确实让它工作了。我只是在我的 MainWindowClass 中插入了一个 QPropertyAnimation 指针。这会阻止对象在程序离开其范围时被销毁。
  • @Carl 这和我刚才提出的一样,在这两种情况下都应该有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多