首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

qt动画的有关问题

2013-11-30 
qt动画的问题我需要画一条线(暂且说是直线吧),但是不能是直接显示出来在窗口,我希望它能够像从头画到尾,像

qt动画的问题
我需要画一条线(暂且说是直线吧),但是不能是直接显示出来在窗口,我希望它能够像从头画到尾,像是一个动画,效果就像是把画线这个过程放的很缓慢,慢慢的画出来。求大神指点啊? qt? 画线 动画
[解决办法]
动过定时器的方式来处理,

起点是定的,只需要改变,线的终点,线的终点怎么改变呢?

最大线长度,xMax,increment
void CMWidget::timer()
{
    x += increment;
    if (x > xMax)
    {
       x = xMax;
       killTimer(id);
    }   
    update();//触发paintEvent调用
}

CMWidget::paintEvent()
{
    //这里画线
}
[解决办法]
使用属性动画描绘你所说的纵向或横向直线是比较容易实现的。以下是模拟一个点的横向或者纵向移动从而描绘出一条线的步骤:
1,自己重写一个qwidget的paintEvent,将这个widget全部填充同一种颜色。
2,在主widget上添加一个你重写的widget,尺寸设置为1*1,即一个像素点。
3,定义一个属性动画对象,对应到你重写的widget的size属性,然后设置好起始size和终止size,就可以模拟出横向或者纵向上的直线描绘。
其本质是把一个1*1的widget拉长成一个1*N像素的widget或者N*1像素的widget,或者N*M像素的widget。

如果你需要描绘的是一条曲线,可以考虑利用定时器,并重新实现paintEvent函数,这需要一些时间和技巧。

当然如果你使用QGraphicsView Framework,可以通过遮罩的方式,用图片和属性动画实现逐渐描绘出一条特定的曲线。

最后如果你需要一些效率较高的简单平面动画,可以考虑了解QGraphicsView Framework(包括QGraphicsItem,QGraphicsView,QGraphicsScene等),并了解一下QPropertyAnimation等。不一定非要用到QStateMachine Framework。

热点排行