建立一个空的Qt工程添加main.cpp
#include <QApplication>
#include <QPushButton>
#include <QState>
#include <QStateMachine>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QPushButton button("state machine");
QStateMachine machine;
//新建三个状态机
QState* s1 = new QState(&machine);
QState* s2 = new QState(&machine);
QState* s3 = new QState(&machine);
//设定三个状态分别控制button在不同的位置显示
s1->assignProperty(&button, "geometry", QRect(100, 100, 100, 50));
s2->assignProperty(&button, "geometry", QRect(300, 100, 100, 50));
s3->assignProperty(&button, "geometry", QRect(200, 200, 100, 50));
//关联三个状态间的切换
s1->addTransition(&button, SIGNAL(clicked()), s2);
s2->addTransition(&button, SIGNAL(clicked()), s3);
s3->addTransition(&button, SIGNAL(clicked()), s1);
// entred为进入 exited离开 还可以有finished propertiesAssigned destroyed
//QObject::connect(s3, SIGNAL(entered()), &button, SLOT(showMinimized()));
//设置起始状态
machine.setInitialState(s1);
machine.start();
button.show();
return app.exec();
}运行后,每点击一次按钮将移至下一个位置

本文档将介绍如何在Qt环境中使用QStateMachine实现状态机。首先,你需要创建一个空的Qt工程,然后在main.cpp文件中引入必要的库并设置状态机的结构。通过QState和QTransition,你可以定义不同状态之间的转换逻辑,从而实现复杂的应用行为控制。
最低0.47元/天 解锁文章
429

被折叠的 条评论
为什么被折叠?



