`
缥缈孤鸿
  • 浏览: 41988 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

Qt状态机实例

    博客分类:
  • C++
阅读更多
#include <QApplication>
#include <QStateMachine>
#include <QPushButton>
#include <QSignalTransition>
#include <QPropertyAnimation>

int main(int argc,char **argv)
{
    QApplication app(argc,argv);
    QWidget *w=new QWidget;
    w->resize(240,320);
    QPushButton *button = new QPushButton("hicjiajia",w);
    QStateMachine *machine = new QStateMachine;     //新建状态机
    QState *state1 = new QState(machine);     //状态1
    state1->assignProperty(button,"geometry",QRect(0,0,80,30));    //绑定button的geomertry属性
    machine->setInitialState(state1);     //state1设为初始化状态
    QState *state2 = new QState(machine);
    state2->assignProperty(button,"geometry",QRect(w->width()-30,w->height()-80,30,80));
    QFont font = QFont("Airl", 12);
    state2->assignProperty(button,"font",font);     //状态2字体


    QPropertyAnimation *ani=new QPropertyAnimation(button,"geometry");
    ani->setDuration(2000);
    ani->setEasingCurve(QEasingCurve::OutBounce);   //动画效果—弹跳

    QSignalTransition *transition1=state1->addTransition(button,SIGNAL(clicked()),state2);      //动画触发信号
    transition1->addAnimation(ani);
    QSignalTransition *transition2=state2->addTransition(button,SIGNAL(clicked()),state1);
    transition2->addAnimation(ani);
    machine->start();     //开启状态机

    w->show();
    return app.exec();
}
分享到:
评论

相关推荐

    qt并发状态机应用实例

    在用qt状态机的时候,往往会遇到一个问题,就是在实际任务执行中,我们不希望两个并行的任务,其中一个结束,就退出当前父状态的情况,一般都会要求两个并行的状态都结束后,再跳出当前父状态。 该实例已经应用到...

    qt状态机类应用实例源码

    qt状态机类应用实例源码

    Qt状态机实现动画

    Qt状态机是基于Qt的QStateMachine类实现的,它允许开发者通过定义一系列的状态和转换来描述一个对象或系统的生命周期。状态机可以根据不同的输入事件或时间间隔触发状态之间的转换,从而控制对象的行为。 在Qt中,...

    Qt状态机场景模拟

    Qt状态机是一种强大的设计模式,用于管理对象的状态变化和行为。在Qt库中,它被实现为`QStateMachine`、`QState`等类,提供了一种声明式的方式来定义对象的状态转换逻辑。在这个场景模拟中,我们将深入探讨如何利用...

    qt状态机 animatedtiles.zip

    在本文中,我们将深入探讨Qt状态机框架以及如何在实际项目中使用它,特别是通过一个名为"animatedtiles"的示例。Qt是一个跨平台的应用程序开发框架,广泛应用于C++编程,提供了丰富的图形用户界面(GUI)功能。状态...

    QT5实例及源码.zip

    11. **QML深度探索**:深入学习QML的高级特性,如组件、动画、状态机等。 12. **多媒体支持**:利用Q Multimedia模块进行音频和视频播放。 13. **XML和JSON处理**:学习解析和生成XML和JSON数据。 14. **移动和...

    Qt状态机事件处理例程!!

    让我们深入探讨Qt状态机事件处理的基本概念、工作原理以及如何创建和使用一个简单的状态机处理例程。 首先,我们要了解Qt中的QStateMachine类,它是状态机的主体,可以包含多个QState实例,每个QState代表一个特定...

    Qt5开发实例在线视频二维码.rar

    本资源集合是针对Qt5开发的一个实例教程,以在线视频的形式呈现,通过扫描二维码,用户可以方便地在手机上观看。 首先,让我们深入了解一下Qt5的核心特点和优势: 1. **跨平台性**:Qt5支持多种操作系统,如...

    mystatemachine_QT_状态机_

    最后,将所有状态和转换添加到QStateMachine实例,并启动状态机。启动状态机通常意味着设置初始状态,并让其开始监听和响应事件。 6. **实际代码分析** 在`mystatemachine`源代码中,你会看到如何创建和配置这些...

    海康相机QT开发实例源代码

    海康相机QT开发实例源代码是一套用于与海康相机进行交互的开发示例,它基于流行的图形用户界面库Qt,旨在帮助开发者更好地理解和实现海康相机的功能集成。在这个实例中,开发者可以学习如何利用海康提供的API来控制...

    qt+OpenGL 实例化qt+OpenGL 实例化

    6. **状态机管理**:OpenGL是一个状态机,这意味着设置一次的状态(如纹理单元、混合模式等)会在后续的绘制调用中持续有效,直到被新的设置覆盖。 7. **资源管理**:在Qt+OpenGL应用中,需要妥善管理纹理、缓冲、...

    QT5 开发及实例 (第3版) 随书光盘

    光盘可能涵盖QML的基础和高级用法,包括动画、状态机和组件化编程。 6. **移动和嵌入式开发**:Qt5支持多种平台,包括Android和iOS。学习资源可能包括如何为不同平台打包和部署应用的指南。 7. **源代码分析**:...

    Qt5开发及实例(第2版)分卷二

    卷二可能包含了多个使用QML设计界面的实例,涵盖了基本组件、布局管理、动画和状态机等方面。 2. **信号与槽机制**:Qt的核心特性之一,信号与槽机制是事件驱动编程的基础。当一个对象的状态发生改变时,会发出信号...

    QT教程—实例教程

    【QT教程—实例教程】是一份面向初学者的Qt编程指南,旨在帮助用户快速掌握Qt开发环境Qt Creator的使用和Qt库的各种功能。本教程覆盖了从基础到进阶的多个方面,通过实例教学的方式,使得学习过程更加直观易懂。 ...

    其他状态机编程

    在提供的"QT状态机编程"压缩包文件中,可能包含了示例代码、教程文档或演示项目,这些资源可以帮助你深入理解如何在Qt中实现和使用状态机。通过学习这些材料,你可以了解如何设置状态、定义过渡、处理信号和槽,以及...

    cifafenxi.rar_QT_QT 分析_QT 状态_QT 词法分析_cifafenxi

    "QT 状态"在这里可能是指词法分析器的状态机,它是词法分析的核心部分。状态机由一系列状态构成,每个状态代表了分析过程中的一个阶段。当遇到不同的字符时,状态机会根据预定义的规则从一个状态转换到另一个状态。...

    基于Qt设计的流媒体播放器(收音机)源码

    本文将详细讲解基于Qt设计的流媒体播放器(收音机)源码的相关知识点,包括Qt框架、解码引擎libvlc以及源代码的关键组件。 Qt是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面(GUI)和其他非GUI应用程序...

    Qt实例教程,免费下载

    14. Qt Quick和QML基础,包括第一个Qt Quick程序、QML组件、动画状态机、视图组件等。 15. 网络编程,涵盖HTTP、FTP、UDP、TCP等协议的使用。 16. 局域网聊天工具开发,涉及到文本智能编辑器的开发。 在安装Qt ...

    QT编程实例--打地鼠+直流电机+点阵数码管

    本实例"QT编程实例--打地鼠+直流电机+点阵数码管"旨在通过一个综合项目,展示如何在QT环境中集成硬件控制、图形用户界面(GUI)以及实时反馈,以实现一个趣味性的打地鼠游戏,同时操作直流电机和显示设备。...

    qt下通过单片机控制电机

    首先需要实例化QSerialPort对象,然后配置串口参数,如波特率、数据位、停止位和校验位。接着,使用open()函数打开串口,并监听串口的读写事件。通过write()方法发送指令到单片机,控制电机的动作;通过readyRead()...

Global site tag (gtag.js) - Google Analytics