Я понимаю, что опаздываю, но, надеюсь, этот ответ поможет всем, кто сталкивается с этим.
Вы упомянули выше, что вы уже пытались использовать конфигурацию (), но ни одно из ваших состояний там не было - это потому, что start () является асинхронным.
Итак, если вы вызвали конфигурацию () сразу после вызова start (), то имеет смысл, что ваши состояния еще не были там. Вы можете получить желаемую функциональность, используя сигнал begin () класса QStateMachine. Проверьте это:
stateMachine->setInitialState(someState);
stateMachine->start();
connect(stateMachine, SIGNAL(started()), this, SLOT(ReceiveStateMachineStarted()));
Затем для вашего слота ReceiveStateMachineStarted () вы можете сделать что-то вроде этого:
void MyClass::ReceiveStateMachineStarted() {
QSet<QAbstractState*> stateSet = stateMachine->configuration();
qDebug() << stateSet;
}
Когда ваш конечный автомат переходит в исходное состояние, он издает сигнал запуска (). Слот, который вы написали, услышит это и распечатает конфигурацию. Подробнее об этом смотрите в следующей документации Qt:
http://doc.qt.io/qt-5/qstatemachine.html#started