首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QT :使用状态机进行UI交互?

QT :使用状态机进行UI交互?
EN

Stack Overflow用户
提问于 2010-07-09 10:25:12
回答 2查看 3.4K关注 0票数 12

大家好,

我们正在开发一个科学的QT应用程序,它可以检测cell.Please的边界,请参考以下原型快照。

现在,我们将把它作为一个设计良好的开源产品来开发,architecture.We发现它有很多复杂的动作和流程。例如:移动轮廓节点,删除轮廓节点,添加轮廓节点,绘制障碍物,选择多个nodes...etc

我们希望为UI使用QT状态机框架,并且想知道是为每个流/动作使用几个状态机实例,还是使用一个“巨大的”状态机?我们需要Undo/Redo操作,是否可以将QT状态机框架与QT Undo/Redo框架交互?

编辑:真的可以使用QT SM Framekwork来处理UI交互吗?他们在GIMP或CAD应用程序中使用哪种设计?

提前谢谢你,umanga

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-18 21:25:57

我认为状态机并不是表示用户交互的正确选择。它适合于轻松地对用户界面本身的更改进行建模。

您可能需要的是状态机和的组合,在Qt中,这是由QUndoStack和QUndoCommand类部分实现的。状态机跟踪用户界面本身的更改,Command类跟踪用户交互。我对检测单元格边框不是很了解,也不知道你是如何在你的应用中规划交互模型的,但让我尝试一个虚构的例子来澄清一下。

示例

假设您的应用程序有两种不同的算法来检测单元格边界,从用户提供的粗略估计开始。一个人在细胞周围采取一条粗略的逐点路径。另一种是手绘的轮廓。您还希望允许用户向单元格图像添加标注注释。假设您也不想让用户的屏幕上充斥着她现在不会使用的工具。

这样,您就有了三种不同的交互模式,并且每种模式都有用户可以使用的不同操作(或工具):

  1. Point by points。用户可以添加点、移除点、四处移动点、选择点、细化用户可以用铅笔和橡皮擦绘制的border.
  2. Freehand.,并细化border.
  3. Callout 。用户可以添加附注、删除附注、四处移动附注、重新定位附注的箭头,以及编辑附注的文本。

除了提供工具之外,前两种模式还可能允许用户调整算法的参数。

一种方法是将1、2和3中的每一个表示为状态机中的状态。在进入其中一个状态时,它会使工具变得可见。当状态退出时,它会隐藏其工具。例如,可以使用工具栏按钮来完成状态的更改。

现在,当使用工具并更改其下的模型时,它还会在QUndoStack中存储一个QUndoCommand。假设用户处于手绘模式。现在,她切换到点对点模式,调整参数,添加两个点,移动一个点,然后将其删除。从下到上,撤消堆栈可能如下所示:

  1. 从徒手模式切换到点对点模式
  2. Change from 0.00001 to 0.002
  3. Add Point #1 at (120,40)
  4. 在(403,11)
  5. 将点#1从(120,40)移动到(350,120)
  6. 删除点#1

请注意,状态更改已添加到撤消堆栈中,因此撤消一系列命令会使用户在发出命令时所处的位置不变。例如,如果她一直撤消到1,则她将返回到手绘模式。

总而言之

Qt中的状态机适用于跟踪用户更改interface.

  • The
  • 设计模式适用于跟踪用户在基础模型中所做的更改。
票数 6
EN

Stack Overflow用户

发布于 2010-07-09 11:21:33

我们已经尝试了Qt的状态机框架和动画框架来实现简单的UI转换。我相信在他们的文档或网站上有关于如何做到这一点的教程或例子。所以,是的,这是可能的。

我不知道它的伸缩性有多好,也不知道最好的架构。如果是我,我会尝试使用许多简单的状态机,利用它们的分层功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3209410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档