zoukankan      html  css  js  c++  java
  • Qt状态机 QStateMachine

    https://baijiahao.baidu.com/s?id=1626185034227877948&wfr=spider&for=pc

    关于Qt状态机的介绍就懒得说了,网络上一搜一大堆,反正也看不懂。我关心的就是怎么使用,毕竟我只是一个编写应用程序的程序员。简单粗暴地理解一下状态机就是一个管理很多状态的机器。
    组成
    一个最简单的状态机应该包括状态机(QStateMachine)、状态(QState)和过渡(QAbstractTransition子类)。状态机就相当于一个容器,过渡就是将某一个状态切换到另一个状态(当然也可以不切换)。
    使用
    1. 状态(QState)设置好此状态下的各对象的属性。
    2. 通过过渡指定它的目标状态。
    3. 将状态添加到状态机中。
    4. 状态机指定一个初始状态,然后调用start启动。
    QState通过assignProperty来关联对象的属性。本例的意思就是在状态1的时候按钮的文本是small,大小为(50,,50)。在状态2时按钮的文本是big,大小为(100,100)。 在这里我们并没有创建QAbstractTransition子类的对象,而是调用QState的addTransition来添加状态的过渡,该函数的返回值就是一个QSignalTransition(QAbstractTransition的子类)对象。这个函数的意思就是通过按钮的clicked信号触发状态的转换。 最后创建一个状态机的对象把已经设置好的状态添加进去,设置好初始状态后启动即可。运行效果如下:

    这里需要注意的是一个状态不止能绑定一个对象的属性,如果是这样的话那它存在的意义好像就不大了。在复杂界面中往往会遇到一个某一时刻很多控件的状态是固定的,通过手动一个一个去设置控件的状态会显得很麻烦,这时候状态机就能帮上大忙了。状态机设置一次就行了,代码简洁明了。还需要注意的一点是状态机也不止是用于界面上的,它也可以用于其他对象,只要是QObject的后代又具有属性的。只不过用于界面是最容易理解罢了。

  • 相关阅读:
    42. Trapping Rain Water
    223. Rectangle Area
    645. Set Mismatch
    541. Reverse String II
    675. Cut Off Trees for Golf Event
    安装 VsCode 插件安装以及配置
    向上取整 向下取整 四舍五入 产生100以内随机数
    JS 判断是否为数字 数字型特殊值
    移动端初始配置,兼容不同浏览器的渲染内核
    Flex移动布局中单行和双行布局的区别以及使用
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/13897026.html
Copyright © 2011-2022 走看看