2016-11-14 7 views
0

PropertyAnimations 시퀀스를 실행해야하는 작업이 있습니다. 애니메이션 중 하나는 QWidget의 가시성을 바꾸는 것입니다.QWidgets의 "visible"속성에 대한 QPropertyAnimation은 한 방향으로 만 작동합니다.

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는 지원에서 얻은 대답 :

부울 그냥 false로 변환하는 일이 잘못된 QVariant, 결과 interpolatable 유형되지 않으므로 부울 속성이 true로 설정 될 수 없다 [..]

속성을 새 값으로 설정하는 자체 QAbstractAnimation 하위 클래스를 만드는 것이 좋습니다. 그러나 bool에 대해 보간 함수를 정의 할 수 있습니다. 예를 들어

정적 QVariant의 bool_interpolator (CONST로부터의 불리언 &, CONST의 불리언 &에, qreal 진행) {진행 < 0.5 복귀? 에서부터; } ... qRegisterAnimationInterpolator (bool_interpolator);

나는 보간법으로 솔루션을 테스트했으며, 필자가 필요로하는대로 정확히 작동했습니다.