本来想用QPropertyAnimation做一个显示或者消失的动画的,结果莫名其妙会丢帧,有时候30帧,有时候10帧,结果只好自己做一个定时器来模拟动画。
qdialog做显示动画在showevent搞就可以了,但是消失动画就不能用closeevent,经过一番摸索,终于ok了。
用qwidget直接重载closeevent完事,qdialog却不一样,
1、重载accept和ignore为空函数
2、捕获button事件,可以分别为on_button_accept,on_button_ignore(),共2个函数
3、在上面2个函数里,记录当前要返回的值(就是0或者1),分别启动定时器开始动画,并且不要调用任何返回事项
4、动画完毕后,根据要返回的值,分别调用QDialog::accept()或者QDialog::ignore()即可返回
核心在于重载accept和ignore,估计很多同学不知道这2个玩意儿也可以重载的,包括之前的我
===============后记=================
后来发现,release模式下动画还是可以的,看来debug下性能损失比较严重。