【问题标题】:Qt's state machine as a node graph?Qt的状态机作为节点图?
【发布时间】:2011-12-06 18:27:29
【问题描述】:

我试图弄清楚如何使用节点图来处理一组数据。 它适用于处理声音数据的应用程序,就像你有一堆吉他踏板一样。 您有一些具有预定义过程的节点在有向图中相互连接。 每个节点轮流处理数据,当一个节点完成时,它会向下一个节点发出信号以执行此操作。这个想法是您使用 ui 将这些节点拼凑在一起。

我正在使用 Qt 来创建 UI,因此我正在查看它的文档以查看是否有一些东西可以用于解决上述问题。我找到了 Qt 状态机,从我能读到它似乎在做我需要的事情,进入一个状态,你做一些处理,当它完成时给出一个完成的信号,然后开始图表中的下一个状态.此外,您可以嵌套状态,让我能够通过组合现有节点来创建新节点,这似乎是一个很有吸引力的想法。

但是,创建状态机是为了更改小部件的属性(更改它们的状态),而不是为了包装过程。例如,按下一个按钮,状态机改变另一个小部件的状态,例如如果按钮被释放,则状态被交换回来。

所以,任何对 Qt、状态机或节点图处理有更多经验的人都可以给我一个提示,调整状态机来包装我的程序是否可行。或者,如果我可以使用 Qt 库中的其他内容?

【问题讨论】:

    标签: c++ qt directed-acyclic-graphs


    【解决方案1】:

    我使用 QStateMachine 进行在线消息处理(online algorithm 意义上的在线),它工作得很好,并没有因为最初的想法是修改小部件而受到限制。

    但是,我个人不会将它用于您的项目,因为状态机与您所描述的不完全一样。可能会根据您的需要弯曲它,但这肯定会很奇怪。更好的解决方案是制作一个漂亮的多态 OO 模型,其中您的“效果”具有基类和解耦图实现来连接它们。您可以使用 Qt 信号来表示完成图表以进行下一步。从数据构建自定义图表也比为状态机动态创建状态和转换更容易。

    【讨论】:

    • 谢谢,我知道我的问题是开放式的,但是你给了我一些东西,所以谢谢你:) 多态 OO 是
    • 我很高兴它有帮助。祝你的项目好运
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    相关资源
    最近更新 更多