【Qt】

这篇博客介绍了Qt状态机的原理和使用,包括状态机中的关键类、创建步骤、状态转换以及实际应用案例,如窗口动画和状态转换窗口。重点讲解了QState、QAbstractTransition及其相关方法,强调了QState::entered()和QAbstractState::onExit()在状态切换中的作用。
摘要由CSDN通过智能技术生成

Qt动画中常常和状态机相互练习,那么什么是状态机呢?
网上的一些解释太高端了,不是很亲民。。。

状态机:
回想之前的动画,运行之后就开始在桌面上运动。那么有什么方法能够控制这一点呢?
比如,按下button之后,动画才出现;
我想:信号和槽应该是一种想法。。。
那么,类似于这种机制,也就是状态机啦。
例如,按钮1处于状态1下是静止的,clicked(),就切换到了状态2,这时是运转的。。。

一 状态机框架中的一些类

就看看吧,熟悉熟悉。。。
QAbstractState
QAbstractTransition
QEventTransition
QFinalState
QHistoryState
QKeyEventTransition
QMouseEventTransition
QSignalTransition
QState
QStateMachine
QStateMachine::SignalEvent
QStateMachine::WrappedEvent

二 状态机机制原理

2.1 第一步:创建状态机

注意:QStateMachine 和 QState

//new 状态机
    QStateMachine *machine = new QStateMachine;
// new 状态1
    QState *state1 = new QState(machine);
// new 状态2
    QState *state2 = new QState(machine);

2.2 第二步:把状态和当前的属性绑定

注意:state.assignProperty()

    state1->assignProperty(button, "geometry", QRect(0, 0, 150, 30));
                //状态1  ——  位置1
    state2->assignProperty(button, "geometry", QRect(250, 250, 150, 30));
                //状态2  ——  位置2

2.3 第三步:状态转换

注意:
QSignalTransition
.addTransition //状态转换如s1->s2,触发方式
.addAnimati

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值