【发布时间】:2019-03-12 19:56:47
【问题描述】:
所以我想在 Qt/cpp 中为服务器创建 gui 界面,该界面可以处于许多不同的状态,并且根据其状态,gui 中的按钮需要进行不同的设置,例如: 界面:
button1 - 未选中并允许点击
button2 - 禁用(灰显)
button3 - 禁用
button3 - 禁用
然后点击button1后 界面:
button1 - 选中
button2 - 可以点击
button3 - 可以点击
button3 - 可以点击
但是例如,如果服务器处于不同的状态并且您通过 gui 连接,则按钮应如下所示:
图形界面:
button1 - 选中
button2 - 可以点击
button3 - 无法点击
button3 - 无法点击
是否有一些既定的模式/方式可以直观地处理它?这里最大的问题是,如果服务器有很多不同的状态,需要在很多不同的配置中设置按钮。我唯一能想到的就是将所有按钮的状态映射到特定状态,但是……有很多按钮和很多状态。
【问题讨论】:
-
对不起,我认为这对 SO 来说太宽泛了。我也认为你应该重新考虑你的设计。如果有很多按钮和很多状态,GUI 可能会非常混乱。是否有任何模式(例如,当且仅当这两个按钮被禁用时才会启用此按钮)?是否可以将服务器状态分组在一起,然后至少将一些按钮映射到更高级别的组?否则:将每个按钮的状态映射到按钮状态。
-
对于这类问题我喜欢
State模式。你可以阅读它here。 -
您可以使用Qt State Machine 来真正实现 Ptaq666 建议的
State模式 -
已经提出的某种显式状态机是一个很好的开始。但是,如果您在每个状态中只启用了相当少的按钮选择,您可能 1. 将所有状态共有的按钮收集在一个或多个单独的容器中,以将它们适当地排列在 stacked layout 组件周围,该组件将仅显示特定状态的相关按钮。
-
@ymoreau 在引用其他网站时,指出cross-posting is frowned upon 通常会有所帮助
标签: c++ qt user-interface button design-patterns