2016-11-14 47 views
0

我有一個任務,我需要執行一系列PropertyAnimations。其中一個動畫改變了QWidget的可見性。當我試圖掩蓋它,它工作完全正常:QPropertyAnimation爲QWidgets的「可見」屬性只能用一種方式

QPropertyAnimation *pAnim = new QPropertyAnimation(pWidget, "visible"); 
pAnim->setStartValue(true); 
pAnim->setEndValue(false); 
pAnim->start(QAbstractAnimation::DeleteWhenStopped); 

但是,當我周圍嘗試用另一種方式,沒有任何反應:

QPropertyAnimation *pAnim = new QPropertyAnimation(pWidget, "visible"); 
pAnim->setStartValue(false); 
pAnim->setEndValue(true); 
pAnim->start(QAbstractAnimation::DeleteWhenStopped); 

我做錯什麼了嗎?或者這可能是Qt中的一個錯誤? 我正在使用Qt 5.6.1,如果有幫助。

回答

0

下面是我從Qt的支持得到了答案:

BOOL不插補類型導致無效的QVariant,這只是 恰好轉換爲false,因此布爾屬性不能被設置爲true 默認值。[..]

它可能是更好地使自己的QAbstractAnimation子類,只是 將該屬性設置爲新值。但是,您當然可以爲其定義bool的 插值函數。例如:

靜態的QVariant bool_interpolator(從常量布爾&,常量布爾&到,QREAL 進展){返回進展< 0.5?從到; } ... qRegisterAnimationInterpolator(bool_interpolator);

我測試了插值的解決方案,它的工作完全因爲我需要它。

相關問題