问题标签 [qstatemachine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QStateMachine addTransition 用于带有参数的信号
使用参数(c++/c++11)在信号上放置 addTransition 的最佳和简短方法是什么:
c++ - QStateMachine延迟函数说明
我在我的程序中使用了这个函数:
我从一个示例中复制粘贴,但我不理解这部分代码:
任何人都可以向我解释这段代码是什么?它在程序中是如何工作的?
PS。我试图用这个来改变那个代码,但它没有用:
c++ - QStateMachine 获取导致状态转换的事件
我创建了一个 QStateMachine 并且我必须获取导致状态转换的事件。没有任何机会进入我的插槽EnterStateInit()
中导致此呼叫的信号。这是我的示例代码:
qml - StateMachine 和 State 中的 QML 范围
我阅读了有关 QML 范围的文档。
此文档允许以下内容(在上述文档中的组件实例层次结构第二个示例下):
我的状态机 ( BaseStateMachine.qml
):
我的州(BaseState.qml
):
我的主要(main.qml
):
但我收到以下错误:
qrc:/qml/BaseState.qml:4: ReferenceError: someProperty is not defined
我是不是误会了什么?我还阅读了 qml 中关于 StateMachine 的文档,并没有发现 StateMachines 和 States 中的范围界定有任何例外。
更新:
如果我添加一个BaseStateMachine.qml
像这样的 id:
然后 QtCreator 就会意识到someProperty
in BaseState.qml
. 在“开始意识到”下,我的意思是,如果我 ctrl/command+click 中的属性,BaseState.qml
它会将我带到BaseStateMachine.qml
. 一旦我从BaseStateMachine.qml
QtCreator 中删除 id 就找不到someProperty
了。
c++ - 如何使用 QStatemachine 来影响 ListView?
我有这个使用 QStatemachine 来管理 UI 的 Projekt,我想在其中添加自定义列表。UI 应该只由关键事件操作。据我了解,我需要 qml 端的 ListView 。
ListView 的委托只对鼠标输入或直接键输入做出反应。但是我使用 C++ 中的 QStatemachine 来操作它,因为它正在处理 UI 的所有关键事件。当我按下右箭头键时,我想要发生的事情是将列表向左移动。
(currentItem 总是在屏幕中间。)
所以我的 ListView 目前看起来像这样。
c++ Statemachine 是一个 QStatemachine,它向 qml 发送信号。
如何将信号绑定到 Listview 的委托?
python - 在运行时将 QState.assignProperty 与动态值一起使用
我QStateMachine
对正确使用 -System有疑问PyQt5
。
使用
允许在活动时设置"Some text"
为plainText
- 属性aState
。
问题:如果"Some text"
在执行之前不是常数或已知的怎么办?我的意图是传递一个函数(与将partial
orlambda
表达式连接到事件不同)而不是在进入状态时会产生适当值的值。
我模拟这种行为的唯一想法是连接一个将属性设置为aState.entered
. 但是我对该解决方案不满意,因为它混淆了设置属性的位置,并且使用它的一个原因QStateMachine
是避免必须自己手动设置状态。
c++ - 子类化和修改 QStateMachine
假设我有一包运行 QStateMachine
. 这些机器人的所有状态机都具有相同的基本结构:
- 状态:
- 睡觉
- 搜索
- 破坏
- 返回
- 转换 (
from
->to
onsignal
:- 睡眠 -> 搜索“下一步”
- 搜索 -> 在“下一个”上销毁
- 销毁 -> 搜索“下一个”
- 销毁 -> 返回“返回”
- 搜索 -> 返回“返回”
- 返回 -> 搜索“下一个”
- 返回 -> 在“返回”上睡觉
// base.h
// base.cpp
现在我想要一个更具体的机器人。假设他在破坏过程中更加详细,具有几个子状态,例如dismantel -> sprayWithAcid -> blowUp -> desintegrate
,他在每个next
- 信号上继续前进,或者他继续在return
-back
信号上。
如前所述,我的计划是将它们作为子状态添加到 statedestroy
中,但信号next
不仅会继续子状态机直到完成,还会离开父状态。
我怎样才能避免这种情况?还是有其他类似的好方法?
qt - QStateMachine 中的事件是如何管理的?
我使用基于QScxmlStateMachine
. 一些转换由onEntry处理程序中的代码自动触发,另一些则由外部事件(例如用户单击)触发。
状态机的执行是异步的。此代码没有阻塞:
美好的。我想知道的是状态机内部的处理是如何完成的。
这第一个事件是排队的,将异步进入一个初始化状态,那么在这个状态onEntry代码中可能触发的事件呢,它们也排队了吗?内部事件循环
是否可以在处理下一个转换之前处理一些其他 GUI 事件?
而且,我认为不是,状态机事件循环是否在单独的线程中?
c++ - QStateMachine:所有状态之间的转换
我正在开发一个矢量绘图应用程序。我有一个具有 4 个 QState 的 QStateMachine:DefaultState、SelectionState、LineDrawingState、PolygonDrawingState。当用户点击相应的工具按钮时,会触发相应的转换并进入状态。用户可以在 4 种工具(和底层状态)中的任何一种之间切换。
这是问题所在。我必须为每个状态实例化 3 个转换对象,以便状态机能够从当前状态切换到任何其他状态。我的意思是我必须:
这似乎是非常多余的。有没有更简单的方法让 QStateMachine 在触发相应的转换时在所有 4 种状态之间切换?
qt - 同步 QStateMachine
我有一个类,其内部状态决定了 QML 文件中的布局。现在这个内部状态主要是由状态机决定的。然而,它的一部分不是由状态机决定的,而是依赖于其他要设置的成员变量。我有以下情况:
这里stateChange1()
可能会改变状态机的状态,导致 qml 变化)。mMember 直接更改 qml。现在我的问题是,statechange1()
在设置隐含的状态更改之前处理隐含的(可能的)状态更改至关重要mMember
。但是,由于 QStateMachine 异步工作,我不能保证这一点。这个问题有什么优雅的解决方案吗?