Russian Qt Forum

Qt => Общие вопросы => Тема начата: ammaximus от Октябрь 10, 2014, 15:36



Название: [РЕШЕНО] QStateMachine
Отправлено: ammaximus от Октябрь 10, 2014, 15:36
С удивлением обнаружил, что на форуме ни разу не поднималась тема QStateMachine.

Насколько я понял это реализация конечного автомата с возможностями анимации, но анимация не главное. Т.е. я использую ее не для анимации а просто для реализации некой UML Statechart.

1. Меня огорчило отсутствие do, а главная проблема в отсутствии PseudostateChoice. Как осуществить выбор перехода от состояния к нескольким другим? Я понимаю, что можно унаследовать QState и наворочить что угодно, но это сильно усложнит код и я хотел бы этого избежать.

2. В сети не нашел нормальных примеров использования, а примеры из Qt слишком игрушечные. Примеры в студию!


Название: Re: QStateMachine
Отправлено: ammaximus от Октябрь 10, 2014, 16:06
3 вопрос. Вот одна из проблем с которой я столкнулся - есть параллельные события. Щелчки мыши переключают режим idle-work и обратно.

Но параллельные состояния зависят друг от друга, а именно, если нажатие мыши происходит, когда активно состояние IDLE, должен произойти переход A-B. Вот что я накрутил и что работает, вместо того, чтобы просто в IDLE.do написать connect(mouseClick,SIGNAL(switchAB). Есть какое то красивое решение этой проблемы в рамках QStateMachine?


Название: Re: QStateMachine
Отправлено: vulko от Октябрь 13, 2014, 09:26
QStateMachine судя по всему придумывался чисто для поддержки анимации и работы с QStackedLayout(Widget).

Что мешает накидать свою StateMachine? Это совсем не сложно.
Да и ничего красивее своей изобразить из Qt-шной все равно не получиться.


Название: Re: QStateMachine
Отправлено: ammaximus от Октябрь 13, 2014, 11:59
Цитировать
QStateMachine судя по всему придумывался чисто для поддержки анимации и работы с QStackedLayout(Widget).
((((
Теперь возникло желание дорабатывать Qt


Название: Re: QStateMachine
Отправлено: ChuCiiPraKray от Октябрь 16, 2014, 07:10
У меня много материала здесь. Может использоваться в повседневной жизни, на самом деле не.


Название: Re: QStateMachine
Отправлено: ammaximus от Ноябрь 06, 2014, 23:25
Забыл написать, вниметельно разобрался с этой темой и теперь очень хорошо понимаю как это работает. QStateMachine очень хорошо показала себя в задачах, не имеющих отношение к анимации. Код стал очень удобным и наглядным, а главное невероятно гибким. В случае необходимости я вношу коррективы в uml-схему и сразу же делаю это в коде.
К сожалению, не нашел никаких материалов, которые рассматривали бы ее с этой стороны, даже в англоязычном сегменте. Поэтому, в ближайшее время напишу заметку по этому вопросу.