我想在Qt桌面應用程序中測試動畫。我剛剛從幫助中複製了一個例子點擊按鈕後,新的按鈕只出現在左上角沒有動畫(甚至結束位置是錯誤的)。我錯過了什麼嗎?QPropertyAnimation不起作用
的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();
}
編輯:解決。動畫對象必須作爲全局引用。例如在私人QPropertyAnimation *動畫部分。然後QPropertyAnimation = New(....);
是的。我在你的答案之前編輯了我的帖子;)但是你是對的,這是解決方案 – Dibo 2013-03-22 22:10:04
這個解決方案並不好:每次你點擊按鈕** pushButton **,你就會動態地創建一個動畫,當你關閉應用程序時,在刪除析構函數中'mAnimation'指向的動畫時最多隻能刪除一個動畫。所以如果你點擊很多次就會出現內存泄漏。問題的最佳答案是[@ ville-lukka]提到的(http://stackoverflow.com/a/15584232/2775917) – 2016-03-20 20:28:54