Russian Qt Forum
Апрель 24, 2024, 23:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QStateMachine  (Прочитано 5439 раз)
ammaximus
Гость
« : Октябрь 10, 2014, 15:36 »

С удивлением обнаружил, что на форуме ни разу не поднималась тема QStateMachine.

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

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

2. В сети не нашел нормальных примеров использования, а примеры из Qt слишком игрушечные. Примеры в студию!
« Последнее редактирование: Ноябрь 06, 2014, 23:41 от ammaximus » Записан
ammaximus
Гость
« Ответ #1 : Октябрь 10, 2014, 16:06 »

3 вопрос. Вот одна из проблем с которой я столкнулся - есть параллельные события. Щелчки мыши переключают режим idle-work и обратно.

Но параллельные состояния зависят друг от друга, а именно, если нажатие мыши происходит, когда активно состояние IDLE, должен произойти переход A-B. Вот что я накрутил и что работает, вместо того, чтобы просто в IDLE.do написать connect(mouseClick,SIGNAL(switchAB). Есть какое то красивое решение этой проблемы в рамках QStateMachine?
« Последнее редактирование: Октябрь 10, 2014, 16:11 от ammaximus » Записан
vulko
Гость
« Ответ #2 : Октябрь 13, 2014, 09:26 »

QStateMachine судя по всему придумывался чисто для поддержки анимации и работы с QStackedLayout(Widget).

Что мешает накидать свою StateMachine? Это совсем не сложно.
Да и ничего красивее своей изобразить из Qt-шной все равно не получиться.
Записан
ammaximus
Гость
« Ответ #3 : Октябрь 13, 2014, 11:59 »

Цитировать
QStateMachine судя по всему придумывался чисто для поддержки анимации и работы с QStackedLayout(Widget).
((((
Теперь возникло желание дорабатывать Qt
Записан
ChuCiiPraKray
Гость
« Ответ #4 : Октябрь 16, 2014, 07:10 »

У меня много материала здесь. Может использоваться в повседневной жизни, на самом деле не.
Записан
ammaximus
Гость
« Ответ #5 : Ноябрь 06, 2014, 23:25 »

Забыл написать, вниметельно разобрался с этой темой и теперь очень хорошо понимаю как это работает. QStateMachine очень хорошо показала себя в задачах, не имеющих отношение к анимации. Код стал очень удобным и наглядным, а главное невероятно гибким. В случае необходимости я вношу коррективы в uml-схему и сразу же делаю это в коде.
К сожалению, не нашел никаких материалов, которые рассматривали бы ее с этой стороны, даже в англоязычном сегменте. Поэтому, в ближайшее время напишу заметку по этому вопросу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 20.