A窗口关闭时的逐渐缩小效果:(以下假定A窗口为B窗口的子窗口)
1.A窗口发送一个信号给B,信号你自己定义
2.在B中定义以下dd:
2.1 对应1中信号的slot函数:beginFlash
2.2 一个定时器closeTimer
2.3 定时器的slot函数:drawCloseFrame
2.4 QPixmap backPixmap , flashPixmap
2.5 int x, y;
2.6 float zoomx;
3. 添加代码:
3.1 beginFlash中先将A窗口的图片获取到:
backPixmap = backPixmap.grabWidget();
flashPixmap = backPixmap ;
x = y = 0;
zoomx = 1.0f;
启动定时器
A.hide()
3.2 drawCloseFrame中
if(zoom < 0)
{
干掉定时器。动画放完了
A.close();
}
获取qpainter,绘图
p.drawPixmap(x, y, flashPixmap );
zoom-= 0.1;
计算x,y的坐标,从最开始的(0,0)直到主窗口中心
QWMatrix matrix;
matrix.scale(zoom,zoom);
// zoom为缩放比率
flashPixmap = backPixmap .xForm(matrix);