2016-11-14 19 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);

我测试了插值的解决方案,它的工作完全因为我需要它。

相关问题