Qt学习教程之对话框消失动画效果

2020-01-06 19:14:38丽君
  • shortcut:主要是针对业务进行的功能定制,warning提示框体的图标是进行单独处理的,是一个叹号图标

    三、代码实现

    在讲解代码之前,先来认识几个概念

    • QPropertyAnimation:属性动画,可以参考qt 窗口动画
    • QGraphicsOpacityEffect:窗口透明度设置类,继承自QGraphicsEffect
    • QGraphicsDropShadowEffect:窗口阴影,继承自QGraphicsEffect
    • QGraphicsBlurEffect:滤镜,继承自QGraphicsEffect
    • QGraphicsColorizeEffect:着色,继承自QGraphicsEffect

      1、移出动画,使用属性动画QPropertyAnimation类进行,propertyname的参数是窗口的属性,详情参见Q_PROPERTY属性 。targetObject对象设置为this内部单独封装的widget,这样做的目的使得该提示框不需要依赖其他窗口遮挡即可做出飞出效果

      
      void GMPOperateTip::MoveOut()
      {
       m_pAnimation->setTargetObject(m_pMoveWidget);
       m_pAnimation->setPropertyName("pos");
      
       m_pAnimation->setStartValue(QPoint());
       switch (m_eDirection)
       {
       case D_LEFT:
        m_pAnimation->setEndValue(QPoint(-width(), 0));
        break;
       case D_TOP:
        m_pAnimation->setEndValue(QPoint(0, -height()));
        break;
       case D_RIGHT:
        m_pAnimation->setEndValue(QPoint(width(), 0));
        break;
       case D_BOTTOM:
        m_pAnimation->setEndValue(QPoint(0, height()));
        break;
       default:
        ;
       }
      }

      2、淡出

      
      m_pOpacity = new QGraphicsOpacityEffect(this);
      m_pOpacity->setOpacity(1);
      
      setGraphicsEffect(m_pOpacity);
      
      m_pAnimation->setTargetObject(m_pOpacity);
      m_pAnimation->setPropertyName("opacity");
      
      m_pAnimation->setStartValue(1);
      m_pAnimation->setEndValue(0);

      3、最小化