20#include <QResizeEvent>
24 , m_direction(direction)
28 , m_widget(new QWidget(this))
30 m_timeLine.setDuration(duration);
31 m_timeLine.setFrameRange(0, 100);
32 connect(&m_timeLine, &QTimeLine::frameChanged,
this, &AnimatedWidget::animateFrame);
39 if (m_timeLine.state() == QTimeLine::Running) {
46 if (m_direction ==
Down) {
48 hidden = -m_widget->height();
51 m_widget->move(QPoint(m_widget->pos().x(), hidden));
53 m_stepY = (hidden - shown) / 100.0;
55 m_stepHeight = m_widget->height() / 100.0;
57 m_timeLine.setDirection(QTimeLine::Forward);
61void AnimatedWidget::animateFrame(
int frame)
63 setFixedHeight(frame * m_stepHeight);
64 m_widget->move(pos().x(), m_startY - frame * m_stepY);
69 if (m_timeLine.state() == QTimeLine::Running) {
73 m_timeLine.setDirection(QTimeLine::Backward);
76 connect(&m_timeLine, &QTimeLine::finished,
this, &QWidget::close);
78 QWidget* p = parentWidget();
84void AnimatedWidget::resizeEvent(QResizeEvent* event)
86 if (event->size().width() != m_widget->width()) {
87 m_widget->resize(event->size().width(), m_widget->height());
90 QWidget::resizeEvent(event);