описание класса QStateMachineКласс QStateMachine предоставляет иерархический конечный автомат. Далее... #include <QStateMachine> Унаследован от: QState. Замечание: Все функции в этом классе являются реентерабельными, а функции postEvent(), postDelayedEvent() и cancelDelayedEvent() также являются потокобезопасными. Этот класс был введён в Qt 4.6. Открытые типы
Свойства
Открытые функции
Переопределённые открытые функции
Открытые слоты
Сигналы
Переопределённые защищённые функции
Дополнительные унаследованные члены
Подробное описаниеКласс QStateMachine предоставляет иерархический конечный автомат. Класс QStateMachine основан на концепции и записи Диаграммы состояний. QStateMachine - часть Структуры Qt State Machine. Конечный автомат управляет набором состояний (классов, которые унаследованы от QAbstractState) и переходов (наследников QAbstractTransition) между этими состояниями; эти состояния и переходы определяют граф состояний. Как только граф состояний был построен, автомат может исполнить его. Алгоритм исполнения QStateMachine основан на алгоритме State Chart XML (SCXML). Обзор структуры даёт несколько графов состояний и код, чтобы построить их. Используйте функцию addState(), чтобы добавить состояние верхнего уровня в автомат. Состояния удаляются из автомата с помощью функции removeState(). Удаление состояния при запущенном автомате - не одобряется. Прежде, чем автомат будет запущен, должно быть установлено исходное состояние. Исходное состояние - это состояние, в которое входит автомат при запуске. Затем вы можете запустить автомат, вызвав функцию start(). Сигнал started() посылается, когда осуществляется в ход в исходное состояние. Автомат событийно-управляемый и содержит свой собственный цикл обработки событий. События посылаются в автомат посредством postEvent(). Это означает, что он выполняется асинхронно, и он не будет выполняться без запущенного цикла обработки событий. Вам, как правило, не нужно будет посылать события в автомат непосредственно, так как переходы Qt, например, QEventTransition и его подклассы, справиться с этим. Но для пользовательских переходов, управляемых событиями, метод postEvent() – полезен. Конечный автомат обрабатывает события и осуществляет переходы до тех пор, пока не перейдёт в конечное состояние верхнего уровня; тогда конечный автомат посылает сигнал finished(). Вы также можете остановить автомат явно, вызвав stop(). В этом случае посылается сигнал stopped(). Следующий фрагмент показывает конечный автомат, который завершится при нажатии кнопки: QPushButton button; QStateMachine machine; QState *s1 = new QState(); s1->assignProperty(&button, "text", "Click me"); QFinalState *s2 = new QFinalState(); s1->addTransition(&button, SIGNAL(clicked()), s2); machine.addState(s1); machine.addState(s2); machine.setInitialState(s1); machine.start(); Пример кода использует QState, который унаследован от QAbstractState. Класс QState предоставляет состояние, которое вы можете использовать, чтобы устанавливать свойства и вызывать методы у QObject'ов, когда осуществляется вход в состояние или выход из него. Он также содержит вспомогательные функции для добавления переходов, например, QSignalTransition, как в этом примере. Подробности смотрите в описании класса QState. Если произошла ошибка, автомат будет искать ошибочное состояние, и, если оно доступно, то он перейдёт в него. Типы возможных ошибок описаны перечислением Error. После перехода в ошибочное состояние, тип ошибки может быть найден с помощью error(). При переходе в ошибочное состояние выполнение графа состояний не будет остановлено. Если ошибочное состояние не применяется, то автомат остановит выполнение и сообщение об ошибке напечатается в консоль. Смотрите также QAbstractState, QAbstractTransition, QState и Каркас конечного автомата. Описание типов-членовenum QStateMachine::ErrorДанное перечисление определяет ошибки, которые могут произойти во время работы автомата. Когда конечный автомат встретится с неисправимой ошибкой, во время выполнения, он установит код ошибки, возвращаемый функцией error(), сообщение об ошибке возвращается функцией errorString(), и перейдёт в ошибочное состояние основанное на контексте ошибки.
Смотрите также setErrorState(). enum QStateMachine::EventPriorityЭто перечисление определяет приоритет события, посланного автомату, используя метод postEvent(). События с высоким приоритетом обрабатываются перед событиями с нормальным приоритетом.
enum QStateMachine::RestorePolicyДанное перечисление определяет тип политики восстановления. Политика восстановления имеет силу, когда автомат входит в состояние, устанавливающее одно или более свойств. Если политика восстановления установлена в RestoreProperties, автомат сохранит оригинальное значение свойства перед установкой нового значения. Позднее, когда автомат переходит в состояние, которое не устанавливает значение для заданного свойства, свойство будет автоматически восстановлено в его исходное значение. Только одно исходное значение будет сохранено для любого заданного свойства. Если значение для свойства уже было сохранено конечным автоматом, оно не будет перезаписано до тех пор, пока свойство не будет успешно восстановлено.
Смотрите также QStateMachine::globalRestorePolicy и QState::assignProperty(). Описание свойствanimated : boolДанное свойство указывает, разрешены ли анимации. По умолчанию это свойство равно true. Функции доступа:
Смотрите также QAbstractTransition::addAnimation(). errorString : const QStringЭто свойство содержит строку сообщения об ошибке этого автомата. Функции доступа:
globalRestorePolicy : RestorePolicyЭто свойство содержит политику восстановления для состояний этого автомата. По умолчанию это свойство равно QStateMachine::DontRestoreProperties. Функции доступа:
Описание функций-членовQStateMachine::QStateMachine ( QObject * parent = 0 )Конструирует новый автомат с заданным родителем - parent. QStateMachine::~QStateMachine ()Уничтожает этот автомат. void QStateMachine::addDefaultAnimation ( QAbstractAnimation * animation )Добавляет анимацию (animation) по умолчанию, которая будет приниматься для любых переходов. void QStateMachine::addState ( QAbstractState * state )Добавляет заданное состояние - state, в этот автомат. Состояние становится состоянием верхнего уровня. Если состояние уже используется в другом автомате, сначала оно будет удалено из его старого автомата, и затем, добавлено в этот автомат. Смотрите также removeState() и setInitialState(). bool QStateMachine::cancelDelayedEvent ( int id )Отменяет обработку события с заданным идентификатором(id). Идентификатор должен иметь значение, возвращаемое функцией postDelayedEvent(). Возвращает true, если событие было успешно отменено, в противном случае возвращает false. Замечание: Эта функция потокобезопасна. Смотрите также postDelayedEvent(). void QStateMachine::clearError ()Очищает сообщения и коды ошибок автомата. QSet<QAbstractState *> QStateMachine::configuration () constВозвращает максимальное непротиворечивое множество состояний (включая параллельные и конечное состояния), в котором этот конечный автомат находится в настоящий момент. Если состояние s входит в конфигурацию, то и родитель s, тоже входит в эту конфигурацию. Заметьте, однако, что автомат сам по себе не является явным членом конфигурации. QList<QAbstractAnimation *> QStateMachine::defaultAnimations () constВозвращает список анимаций по умолчанию, которые принимаются для любого перехода. Error QStateMachine::error () constВозвращает код последней ошибки, которая произошла в автомате. bool QStateMachine::event ( QEvent * e ) [virtual protected]Переопределено от QObject::event(). bool QStateMachine::eventFilter ( QObject * watched, QEvent * event ) [virtual]Переопределено из QObject::eventFilter(). bool QStateMachine::isRunning () constВозвращает, запущен ли автомат или нет. Смотрите также start(), stop() void QStateMachine::onEntry ( QEvent * event ) [virtual protected]Переопределено из QAbstractState::onEntry(). Эта функция будет вызывать start() для запуска конечного автомата. void QStateMachine::onExit ( QEvent * event ) [virtual protected]Переопределено из QAbstractState::onExit(). Эта функция будет вызывать stop() для остановки конечного автомата и последующей отправки сигнала stopped(). int QStateMachine::postDelayedEvent ( QEvent * event, int delay )Посылает заданное событие – event, для обработки этим автоматом, с задержкой – delay, в миллисекундах. Возвращает идентификатор, связанный с задержанным событием, или -1, если событие не может быть послано. Эта функция возвращает управление немедленно. Когда время задержки истечёт, событие будет добавлено в очередь событий автомата для обработки. Автомат становится владельцем события и удаляет его, как только оно будет обработано. Вы можете посылать события только, когда автомат запущен. Замечание: Эта функция потокобезопасна. Смотрите также cancelDelayedEvent() и postEvent(). void QStateMachine::postEvent ( QEvent * event, EventPriority priority = NormalPriority )Посылает заданное событие – event, с заданным приоритетом priority, для обработки этим автоматом. Эта функция возвращает управление немедленно. Событие добавляется в очередь событий автомата. События обрабатываются в порядке поступления. Автомат становится владельцем события и удаляет его, как только оно будет обработано. Вы можете посылать события только, когда автомат запущен. Замечание: Эта функция потокобезопасна. Смотрите также postDelayedEvent(). void QStateMachine::removeDefaultAnimation ( QAbstractAnimation * animation )Удаляет анимацию – animation, из списка анимаций по умолчанию. void QStateMachine::removeState ( QAbstractState * state )Удаляет заданное состояние – state, из конечного автомата. Автомат перестаёт быть владельцем состояния. Смотрите также addState(). void QStateMachine::start () [slot]Запускает этот автомат. Автомат сбросит свои конфигурацию и переход в начальное состояние. При входе в конечное состояние верхнего уровня (QFinalState), автомат пошлет сигнал finished() Замечание: Конечный автомат не будет работать без запуска цикла событий, такого, как главный цикл событий приложения, запускаемый с помощью QCoreApplication::exec() или QApplication::exec(). Смотрите также started(), finished(), stop() и initialState(). void QStateMachine::started () [signal]Этот сигнал посылается, когда автомат входит в его начальное состояние (QStateMachine::initialState). Смотрите также QStateMachine::finished() и QStateMachine::start(). void QStateMachine::stop () [slot]Останавливает этот автомат. Автомат остановит обработку событий и, затем, пошлёт сигнал stopped(). Смотрите также stopped() и start(). void QStateMachine::stopped () [signal]Этот сигнал посылается, когда автомат останавливается. Смотрите также QStateMachine::stop() и QStateMachine::finished(). |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |