Qt官方示例-双向按钮

2023-03-17 14:20:05 浏览数 (2)

"双向按钮"示例演示了如何使用状态机框架实现简单的状态机,该状态机在单击按钮时切换当前状态。

  应用程序的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安装目录找到:
代码语言:javascript复制
C:Qt{你的Qt版本}Examples{你的Qt版本}widgetsstatemachinetwowaybutton
  • 相关链接
代码语言:javascript复制
https://doc.qt.io/qt-5/qtwidgets-statemachine-twowaybutton-example.html

0 人点赞