做淘客网站需要什么,网站域名收费,成都建设监理协会网站网址,wordpress 上传阿里云1. 前言
在Qt编程时#xff0c;我们经常会在界面上添加一些按钮#xff0c;当按钮被点击时#xff0c;执行某段代码#xff0c;例如显示一个对话框、关闭窗口#xff0c;保存文件等等。
这种由UI控件触发某种信号#xff0c;通过信号槽触发目的代码执行的场景非常多。这…1. 前言
在Qt编程时我们经常会在界面上添加一些按钮当按钮被点击时执行某段代码例如显示一个对话框、关闭窗口保存文件等等。
这种由UI控件触发某种信号通过信号槽触发目的代码执行的场景非常多。这种场景下通常不需要关注目的代码的执行结果仅仅通过信号触发槽即可完成任务。我们可以用两个单词来描述上述功能场景即 request-do即 UI 发出操作请求触发代码执行。
但是在需要关注执行结果并且需要将结果反馈到UI的功能场景下上述简单的执行流程就无法满足功能实现的需要了因为上述代码缺少状态反馈控制没有闭环。
2. 播放暂停场景
2.1 设计
以播放暂停按钮为例。我们在实现播放暂停按钮时通常需要满足以下约束条件
播放暂停功能复用同一个按钮对于异步操作要防止同一种功能按钮被重复点击否则会出BUG同步执行时执行结束前按钮不可能被点击所以同步执行不需要考虑重复点击
2.2 实现
为了实现播放和暂停复用同一个按钮需要在点击播放按钮后发出播放请求信号。对应的槽函数尝试执行播放操作如果执行结果有两种
播放成功播放失败
播放响应完成后需要将播放响应的执行结果反馈到UI上
播放成功后发出通知UI模块将按钮切换为暂停按钮样式播放失败后发出通知UI模块将按钮保持原状态以便用户再次操作。
为了实现异步操作防止重复点击需要在点击播放按钮后禁用播放按钮。在异步操作执行完成后向UI反馈通知执行结果
播放成功后发出通知UI模块使能按钮将按钮切换为暂停按钮样式播放失败后发出通知UI模块使能按钮将按钮保持原状态以便用户再次操作。
上述实现过程可以用三组单词来描述即 request-try-notifyState请求-尝试执行-通知状态/结果 通过 request-try-notifyState 流程实现了UI控制与状态反馈的完整闭环。
3. 结论
为了实现不同的功能需要采用不同的实现方法。采用正确的实现方法虽然不能让你写出惊为天人的代码但是可以减少BUG产生防止返工提高工作效率。 本文原创发布于Qt未来工程师。