"双向按钮"示例演示了如何使用状态机框架实现简单的状态机,该状态机在单击按钮时切换当前状态。
应用程序的main()函数从构造应用程序对象,按钮和状态机开始。
代码语言:javascript复制int main(int argc, char **argv)
{
QApplication app(argc, argv);
QPushButton button;
QStateMachine machine;
状态机有两个状态;on和off。进入任何一种状态时,按钮的文字都会进行相应的设置。
代码语言:javascript复制 QState *off = new QState();
off->assignProperty(&button, "text", "Off");
off->setObjectName("off");
QState *on = new QState();
on->setObjectName("on");
on->assignProperty(&button, "text", "On");
当状态机处于该off状态并单击该按钮时,它将过渡到该on状态;当状态机处于该on状态并单击该按钮时,它将转换为该off状态。
代码语言:javascript复制 off->addTransition(&button, &QAbstractButton::clicked, on);
on->addTransition(&button, &QAbstractButton::clicked, off);
状态被添加到状态机;它们成为顶级(同级)状态。
代码语言:javascript复制 machine.addState(off);
machine.addState(on);
初始状态为off; 这是状态机启动后状态机将立即转换到的状态。
代码语言:javascript复制 machine.setInitialState(off);
machine.start();
最后,调整按钮的大小并使其可见,然后进入应用程序事件循环。
代码语言:javascript复制 button.resize(100, 50);
button.show();
return app.exec();
}
关于更多
- 在QtCreator软件可以找到:
- 或在以下Qt安装目录找到:
C:Qt{你的Qt版本}Examples{你的Qt版本}widgetsstatemachinetwowaybutton
- 相关链接
https://doc.qt.io/qt-5/qtwidgets-statemachine-twowaybutton-example.html