QWidgets的“可见”属性的QPropertyAnimation只能以一种方式工作

时间:2016-11-14 14:43:50

标签: qt animation qt5.6

我有一项任务,我需要执行一系列PropertyAnimations。其中一个动画是改变QWidget的可见性。当我试图隐藏它时,它完全正常:

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。

1 个答案:

答案 0 :(得分:0)

以下是我从Qt支持中得到的答案:

  

bool不是插值类型,导致无效的QVariant,这只是   恰好转换为false,因此boolean属性永远不能设置为true   默认值。[..]

     

最好自己创建自己的QAbstractAnimation子类   将属性设置为新值。但是,您当然可以定义您的   bool的插值函数。例如:

     

静态QVariant bool_interpolator(const bool& from,const bool& to,qreal   进展){返回进度< 0.5?从到; }   ...   qRegisterAnimationInterpolator(bool_interpolator);

我用插值器测试了解决方案,它完全按照我的需要工作。