![]() |
1
10
在阅读了您的需求以及这里的答案和评论之后,我认为merula的解决方案或类似的解决方案是唯一的纯状态机解决方案。
正如我们所注意到的那样,平行状态引发了
没有编译这个,甚至没有测试它,但它应该证明的原则 |
![]() |
2
4
我将使用具有四个子状态(无有效输入、一个有效输入、两个有效输入、三个有效输入)的状态机。很明显你一开始没有有效的输入。每个小部件都可以从“无”转换为“后”(2和3的计数相同)。当输入3时,所有小部件都有效(按钮已启用)。对于所有其他状态,进入状态时必须禁用按钮。 我编写了一个示例应用程序。主窗口包含两个qcheckbox一个QSpinBox和一个QPushButton。主窗口中有信号,便于记录状态的转换。当窗口小部件的状态发生更改时,会触发。 主窗口.h
主窗口.cpp
|
![]() |
3
1
有时,单击按钮后,还需要更改按钮状态。 [编辑]:我确信有一些方法可以使用状态机来实现这一点,您是只在两个复选框都选中并且添加了无效权重的情况下进行还原,还是只需要在选中一个复选框的情况下进行还原?如果是前者,那么你可以建立一个 RestoreProperties 允许您还原为复选框状态的状态。否则,是否有某种方法可以在检查重量是否有效之前保存状态,还原所有复选框,然后还原状态。 |
![]() |
4
1
设置你的重量输入小部件,这样就不可能输入小于零的重量。那你就不需要了
|
![]() |
5
1
编辑 我重新打开了这个测试,愿意使用它,添加到.pro
我发现lambda语法已经改变了。。。捕获列表不能引用成员变量。这是正确的代码
结束编辑
|
![]() |
Wolfspirit · 你如何确定一个时间点是否在一个时间段内? 10 月前 |
|
h-swell · QT——如何使用布局类? 1 年前 |
|
LeftFrog · Qt中macOS上的按钮颜色不变 1 年前 |
![]() |
Bobby · Qt是否与RAII设计模式不兼容? 1 年前 |
![]() |
Harvey · 如何更改Qt Creator配置项目的默认套件? 1 年前 |