场景
界面上,钞票宽度以列表形式显示,点击曲线图,弹出钞票宽度的曲线图。
曲线图上,要求鼠标点在数据项时,可以显示数据的信息,比如测试名称,命令名称,钞票索引号,宽度值。
在循环测试下可以产生钞票宽度数据,在单命令测试也可以产生钞票宽度数据,在历史数据查询中,也会有宽度数据,这些宽度数据都会有一个宽度曲线图。
在视线中,宽度曲线图是一个类,循环测试,单命令测试,历史数据查询分别对应三个不同的类,如何从不同的类中获取数据的提示信息呢?
解决方案
继承机制
循环测试,单命令测试,历史数据查询三个类从一个数据源类中继承过来,该数据源类定义一个获取数据信息的虚函数,三个子类实现自己的函数。
QT信号槽
以Q表示曲线图类,以D表示循环测试/单命令测试/历史数据查询类,交互过程如下
1)Q 发出 GET_DATA_INFO 信号
2)D 响应 Q::GET_DATA_INFO 信号,整理好数据信息, 发出 DATA_INFO_DONE 信号
3)Q 响应 D::DATA_INFO_DONE信号,保存数据信息到本地;
4)Q 读取本地保存的数据信息并显示
此方案使用了在UI主界面中信号槽是按顺序执行的。但是,处理流程过于冗长;