我有一项任务,我需要执行一系列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。
答案 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);
我用插值器测试了解决方案,它完全按照我的需要工作。