2013-02-15 26 views
0

所以我試圖對已經添加到QGraphicsScene中的QWidget使用QPropertyAnimation,它不工作。我真的不能複製和粘貼代碼,因爲它是一個比較複雜的系統交織在一起,但摘要基本上是這樣的:在QGraphicsScene中動畫QWidgets

創建一個自定義的widget
CustomWidget widget;

小部件添加到圖形場景
graphicsScene,addWidget(widget);

在以後的某個點,的widget的成員函數嘗試創建並啓動QPropertyAnimation

QPropertyAnimation *anim = new QPropertyAnimation(this, "_opacity"); 

anim->setDuration(5000); 
anim->setKeyValueAt(0, 0); 
anim->setKeyValueAt(1, 1); 

anim->start(); 

而不是一個平滑的動畫,屬性更改爲第二個值,並停留在那裏。

我在網上看過一些相關的問題和他們的解決方案,但沒有一個符合我的情況。有誰知道如何做到這一點?

編輯:我發現我只是需要做出_opacity調用update()

回答

0

我猜你是在棧而非堆上分配QPropertyAnimation和朋友寫功能。 請注意,QPropertyAnimation對象將在範圍的末尾被銷燬,因此以後不會更改屬性。

你很可能想要在堆上創建該對象。另請參閱示例:http://doc.qt.digia.com/4.7/qpropertyanimation.html

+0

謝謝,我正在做一些只是在堆棧上做了所有事情的示例。然而,現在動畫只是在我點擊之前不做任何事情,在這一點上它會進入最終狀態。 – augzodia 2013-02-17 23:24:46