Конечный автомат Qt как граф узлов? - PullRequest
1 голос
/ 05 декабря 2011

Я пытаюсь выяснить, как использовать граф узлов для обработки набора данных.Это для приложения, которое манипулирует звуковыми данными, как если бы у вас была куча педалей для вашей гитары.У вас есть несколько узлов с предопределенными процедурами, соединенными друг с другом в ориентированном графе.Каждый из них по очереди обрабатывает данные, а когда он заканчивается, он дает сигнал следующему узлу, чтобы он выполнил свою задачу.Идея в том, что вы собираете эти узлы вместе, используя пользовательский интерфейс.

Я использую Qt для создания пользовательского интерфейса, и поэтому я просматривал его документацию, чтобы увидеть, есть ли что-то, что я мог бы использовать для вышеупомянутой проблемы,И я нашел конечный автомат Qt, из того, что я могу прочитать, он, кажется, делает то, что мне нужно, состояние введено, вы выполняете некоторую обработку, когда это делается, дается законченный сигнал, и запускается следующее состояние в графике.,Также тот факт, что вы можете вкладывать состояния, давая мне возможность создавать новые узлы путем объединения существующих, кажется привлекательной идеей.

Однако конечный автомат был создан для изменения атрибутов виджетов (изменения их состояния).), а не для процедур упаковки.Например, кнопка нажата, и конечный автомат меняет состояние другого виджета, и, например, если кнопка отпущена, состояние переключается обратно.

Итак, любой, у кого больше опыта, с Qt, конечный автоматили обработка графами узлов, которые могут дать мне подсказку, будет ли работать настройка конечного автомата, чтобы обернуть мои процедуры.Или, если в библиотеке Qt есть что-то еще, что я мог бы использовать?

1 Ответ

0 голосов
/ 06 декабря 2011

Я использовал QStateMachine для онлайн-обработки сообщений (онлайн в смысле онлайн-алгоритм ), и он работал нормально, ограничений не было только потому, что первоначальной идеей было модифицировать виджеты.

Однако лично я бы не стал использовать его для вашего проекта, потому что конечный автомат не совсем то, что вы описываете.Может быть возможно согнуть его под ваши нужды, но это, конечно, будет странно.Лучшим решением было бы создать красивую полиморфную ОО-модель с вашими «эффектами», имеющими базовый класс и реализацию развязанного графа для их соединения.Вы можете использовать сигналы Qt, чтобы закончить график и перейти к следующему шагу.Также проще построить пользовательский график из данных, чем динамически создавать состояния и переходы для конечного автомата.

...