Qt状态机场景模拟
来源:互联网 发布:o2o商城源码 编辑:程序博客网 时间:2024/06/05 20:26
Qt状态机场景模拟
- Qt状态机场景模拟
- 效果图
- QState状态机创建红绿灯
- 动画控制小车移动
- 结尾
- Qt状态机场景模拟
效果图
因录制问题,效果不是很好,这里截了部分状态图
1.
2.
3.
QState状态机创建红绿灯
QState *createLightState(LightWidget *light, int duration, QState *parent = 0) { //状态添加 QState *lightState = new QState(parent); //为状态添加一个定时器 QTimer *timer = new QTimer(lightState); timer->setInterval(duration); timer->setSingleShot(true); QState *timing = new QState(lightState); //状态开启时,灯亮 QObject::connect(timing, SIGNAL(entered()), light, SLOT(turnOn())); //状态开启时,开始定时器 QObject::connect(timing, SIGNAL(entered()), timer, SLOT(start())); //状态结束时,灯灭 QObject::connect(timing, SIGNAL(exited()), light, SLOT(turnOff())); //状态结束时,发出一个结束信号(这里是为了告诉小车,绿灯状态下,小车过马路) connect(lightState, &QState::finished, [this, light](){ emit signalCurLightColor(light->getLightColor()); }); //终止状态 QFinalState *done = new QFinalState(lightState); //定时器结束时,结束状态 timing->addTransition(timer, SIGNAL(timeout()), done); lightState->setInitialState(timing); return lightState; }
//创建一个状态机QStateMachine *machine = new QStateMachine(this);//红灯状态QState *redLight = createLightState(widget->redLight(), 1000);redLight->setObjectName("redLight");//黄灯状态 QState *yellowLight = createLightState(widget->yellowLight(), 1000); yellowLight->setObjectName("yellowLight");//绿灯状态 QState *greenLight = createLightState(widget->greenLight(), 3000); greenLight->setObjectName("greenLight");//红灯------>黄灯 切换 redLight->addTransition(redLight, SIGNAL(finished()), yellowLight);//黄灯------>绿灯 切换 yellowLight->addTransition(yellowLight, SIGNAL(finished()), greenLight);//绿灯------>红灯 切换 greenLight->addTransition(greenLight, SIGNAL(finished()), redLight); machine->addState(redLight); machine->addState(yellowLight); machine->addState(greenLight); machine->setInitialState(redLight); machine->start();
动画控制小车移动
QPropertyAnimation *animation = new QPropertyAnimation(m_carWidget, "pos");animation->setDuration(2500);animation->setEndValue(QPoint(200, 300));animation->start(QAbstractAnimation::DeleteWhenStopped);
结尾
只为记录,只为分享! 愿所写能对你有所帮助。Good Good Study, Day Day Up!
主要代码都在上面,工程就不上传了,需要工程文件的,留言,或者加QQ。我发给各位。状态机那块,参考了QtDemo
阅读全文
0 0
- Qt状态机场景模拟
- Qt状态机场景模拟-续
- qt 状态机
- QT状态机
- QT状态机
- Qt图元,场景,视图,状态机,状态转移,动画设置等的示列(备忘)
- Qt图元,场景,视图,状态机,状态转移,动画设置等的示列(备忘)
- Qt图元,场景,视图,状态机,状态转移,动画设置等的示列
- QT状态机框架
- qt状态机的实现
- Qt 状态机框架学习
- qt状态机框架
- Qt状态机学习1
- Qt状态机学习2
- Qt状态机学习3
- Qt状态机学习4
- Qt状态机框架
- QT状态机QStatemachine
- Error creating bean with name 'hotWordServiceImpl': Unsatisfied dependency expressed through field '
- bootstrap模态框
- JDK TOMCAT环境变量设置
- Python3.x 函数实例
- 数据结构实验之图论六:村村通公路
- Qt状态机场景模拟
- lambda表达式
- Android TextView使用HTML处理图片文字混合显示
- 运算符重载(复数类(Complex))
- 哇!Django 2.0 发布,不再支持 Python 2.x
- 除了人工智能工程师,还有一种工程师或许更抢手
- bzoj3503 [Cqoi2014]和谐矩阵(高斯消元)
- 深圳无人驾驶公交车试运行,刷爆朋友圈!
- ubuntu 14.04+ GTX 1070+cuda 8.0 + cudnn 5.1+opencv3.0+caffe-SSD配置一步到位