Vytvořte qstate QT

hlasů
1

Mám-li jednoduchý stavový automat takového

  switch(state)
    {
    case state_1:
      doSomething();
    state = state_2;
    break;
    case state_2:
    doSomething_2();
state = state_finished;
    break;
    }

jak bych převést tento jednoduchý stavový automat do qstate s přechody?

Položena 14/04/2016 v 06:46
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Bylo by například něco takového:

TestClass test_class;
QStateMachine machine;

QState *state_1 = new QState(&machine);
QObject::connect(state_1, SIGNAL(entered()), &test_class, SLOT(doSomething1()));

QState *state_2 = new QState(&machine);
QObject::connect(state_2, SIGNAL(entered()), &test_class, SLOT(doSomething2()));

QFinalState *state_finished = new QFinalState(&machine);
TestClassFinishedTransition *finished_transition = 
                                new TestClassFinishedTransition(&test_class);
finished_transition->setTargetState(state_finished);
state_2->addTransition(finished_transition);

machine.setInitialState(state_1);
machine.start();

TestClass by být QObjectzaložen třídu.

Doufám, že tento kus kódu vám pomůže začít v chápání pojmu. Nicméně, budete muset číst dokumentaci pečlivě projít příklady, které poskytl Qt.

Odpovězeno 14/04/2016 v 10:19
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more