制作动画效果需要用到QT的动画类:QPropertyAnimation 这个类有很多的动画效果,我只展示其中的一种,可以打开Qt的帮助文档看:
我就是用了上面的例子实现了这个收缩的功能。其实说白了收缩窗体,无非是让窗体从能看得见的地方移动到看不见的地方,自己用定时器也是可以实现的。
话不多说,直接上代码。
m_pEmergancy = new EP_Emergancy(this);
m_bIsMenu = !m_bIsMenu;
m_pEmergancy->show();
if (m_bIsMenu == true)
{
int mainHeight = this->height();
QPropertyAnimation *animation = new QPropertyAnimation(m_pEmergancy, "geometry");
animation->setDuration(2000);
animation->setStartValue(QRect(0 - 300, 0 + 50, 300, mainHeight));
animation->setEndValue(QRect(0, 0 + 50, 300, mainHeight));
animation->start();
}
else
{
int mainHeight = this->height();
QPropertyAnimation *animation = new QPropertyAnimation(m_pEmergancy, "geometry");
animation->setDuration(2000);
animation->setStartValue(QRect(0, 0 + 50, 300, mainHeight));
animation->setEndValue(QRect(0 - 300, 0 + 50, 300, mainHeight));
animation->start();
}
最后实现效果:
喜欢的记得3连