【Qt】应用程序列表转起来 in QT4.6

系统 1484 0

应用程序列表转起来

✿我的需求

拒绝应用程序列表的1234陈列图标状,实现360°转动效果。

PS:录制效果很卡,帧效果很差,实际效果很流畅,请发挥最完美的想象-_-||

✿我的实现方案

我用 QPropertyAnimation 实现Button的转动效果。思路就是,在一个周期时间里,对应改变Button的坐标位置。

为了让效果看起来更平滑,更自然,建议多定义几个状态 0,0.3,0.5 ,0.7, 1为宜,根据屏幕大小具体分析。

QPropertyAnimation * animation = new QPropertyAnimation ( button , "geometry" );

animation->setDuration(clk);

animation->setKeyValueAt(0,QRect(x1, y1, w1, h1));

animation->setKeyValueAt(0.5,QRect((x1+x2)/2, (y1+y2)/2+20, ((w1+w2)*2)/3, (h1+h2)/2));

animation->setKeyValueAt(1,QRect(x2, y2, w2, h2));

在改变位置的同时,需要让按钮上的图标图片也随着自然改变大小。

QPropertyAnimation * animationlefticon = new QPropertyAnimation ( button , "iconSize" );

animationlefticon -> setDuration ( clk );

animationlefticon -> setKeyValueAt ( 0 , QSize ( w1 , h1 ));

animationlefticon -> setKeyValueAt ( 0.5 , QSize (( w1 + w2 )/ 2 ,( h1 + h2 )/ 2 ));

animationlefticon -> setKeyValueAt ( 1 , QSize ( w2 , h2 ));

这样仅仅是一帧的操作,即位置改变一次。(以第一个button为例,反复的从左边的位置移到中间的位置)

怎么样实现状态的连续改变,怎么样记录每个按钮当前的位置的信息值?

当应用程序列表中的程序个数大于3个,如何实现交替轮换其中的3个显示?

———— 答案 是:用一个array[]来更新当前帧的位置信息

//用apparray记录应用程序列表,用int f 来标记当前帧所指向的app

apparray[0] = button1;

apparray[1] = button2;

apparray[2] = button3;

......

apparray[n-1] = buttonn;

f = 1;

//每次改变状态后,刷新当前位置

f++;

if(f<0) f=n-1;

if(f>n-1) f=0;

void update()

{

if((f-1)<0 ) left = apparray[2];

else left = apparray[f-1];

if((f+1)>n-1) right = apparray[0];

else right = apparray[f+1];

}

✿写在最后

欢迎交流,欢迎转载,但是希望你尊重我,注明出处,谢谢。

——茜。

【Qt】应用程序列表转起来 in QT4.6


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论