剖析 Qt 实现动画状态机实例
创始人
2024-08-01 16:40:53
0

Qt 实现动画状态机实例是本文介绍的内容,Qt 4.6引入了动画框架,摆脱了以往控件只能安静的呆在布局里的时代,利用Qt提供的动画框架,我们可以让控件跳起舞来,呵呵,很有趣啊… 在Qt 4.7中又引入了Qt quick技术,其中的QML语言也是专门来定制GUI动画效果的,这是一种新的GUI动画机制,我刚也接触了些,语法类似CSS,实现预定义的动画很方便,所见即所得,路还得一步步走,先学习一下传统的Qt动画方式——状态机

这里先直接给出例子(见图):

实现动画

 

下面是源码:

  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6. int main(int argc,char **argv){  
  7.     QApplication app(argc,argv);  
  8.         QWidget *w=new QWidget;  
  9.             w->resize(240,320);  
  10.                QPushButton *button = new QPushButton("hicjiajia",w);  
  11.                 QStateMachine *machine = new QStateMachine;     //新建状态机  
  12.                QState *state1 = new QState(machine);     //状态  
  13.                state1->assignProperty(button,"geometry",QRect(0,0,80,30));    //绑定button的geomertry属性  
  14.               machine->setInitialState(state1);     //state1设为初始化状态  
  15.              QState *state2 = new QState(machine);  
  16.             state2->assignProperty(button,"geometry",QRect(w->width()-30,w->height()-80,30,80));  
  17.             QFont font = QFont("Airl", 12);   
  18.         state2->assignProperty(button,"font",font);     //状态2字体  
  19.         QPropertyAnimation *ani=new QPropertyAnimation(button,"geometry");  
  20.          ani->setDuration(2000);    ani->setEasingCurve(QEasingCurve::OutBounce);   //动画效果—弹跳   
  21.          QSignalTransition *transition1=state1->addTransition(button,SIGNAL(clicked()),state2);//动画触发信号  
  22.              transition1->addAnimation(ani);  
  23.         QSignalTransition *transition2=state2->addTransition(button,SIGNAL(clicked()),state1);  
  24.         transition2->addAnimation(ani);   
  25.         machine->start();     //开启状态机   
  26.         w->show();  
  27.         return app.exec();  

小结:剖析 Qt 实现动画状态机实例的内容介绍完了,希望本文对你有所帮助,你应该也对这个实例很感兴趣吧!

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...