Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
状态机与Qt设计器_Qt_State Machine - Fatal编程技术网

状态机与Qt设计器

状态机与Qt设计器,qt,state-machine,Qt,State Machine,我试图修改Qt的状态机框架示例。我在Qt设计器中创建了一个QWidget,并添加了一个标签和按钮。这是我的密码 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setupStateMachine(); } void MainWindow:: setupStateMachine() { QSta

我试图修改Qt的状态机框架示例。我在Qt设计器中创建了一个QWidget,并添加了一个标签和按钮。这是我的密码

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setupStateMachine();
}

void MainWindow:: setupStateMachine()
{
    QStateMachine machine;
    QState *s1 = new QState();
    QState *s2 = new QState();
    QState *s3 = new QState();

    s1->assignProperty(ui->label, "text", "In state s1");
    s2->assignProperty(ui->label, "text", "In state s2");
    s3->assignProperty(ui->label, "text", "In state s3");

    s1->addTransition(this->ui->button, SIGNAL(clicked()), s2);
    s2->addTransition(this->ui->button, SIGNAL(clicked()), s3);
    s3->addTransition(this->ui->button, SIGNAL(clicked()), s1);

    machine.addState(s1);
    machine.addState(s2);
    machine.addState(s3);
    machine.setInitialState(s1);

    machine.start();

    qDebug() << "State Machine Created";
}
MainWindow::MainWindow(QWidget*父项):
QMainWindow(父级)、ui(新ui::MainWindow)
{
用户界面->设置用户界面(此);
setupStateMachine();
}
void MainWindow::setupStateMachine()
{
qstate机器;
QState*s1=新的QState();
QState*s2=新的QState();
QState*s3=新的QState();
s1->赋值属性(ui->标签,“文本”,“状态s1”);
s2->赋值属性(ui->标签,“文本”,“处于s2状态”);
s3->赋值属性(ui->标签,“文本”,“处于s3状态”);
s1->addTransition(此->用户界面->按钮,信号(单击()),s2);
s2->addTransition(此->用户界面->按钮,信号(单击()),s3);
s3->addTransition(此->用户界面->按钮,信号(单击()),s1);
机器状态(s1);
机器状态(s2);
添加状态(s3);
机器设置初始状态(s1);
machine.start();

qDebug()函数结束时,
QStateMachine
对象超出范围并被删除。 您应该动态地分配它:

QStateMachine *machine = new QStateMachine(this);