1.使用方法
程序进入界面
可以看到左侧的工具栏,上部的菜单栏,左侧的网格线,右侧依次排列的是计时器,命令显示窗口,清洗功能选择按钮 。
左侧工具栏从上之下依次为:
设置网格的基本宽高及 Input位置读入命令文档开始连续播放画面单步向后执行命令,每次点击时间加一向前一步重置时间及网格状态选择声音是否播放退出程序
以下简述程序正常运行的步骤
首先设置网格基本属性
注意设置 Input 时,每次添加一个 Input 位置需点击键来保存,设置完毕后点击 OK 确认 。
读入命令文件
弹出文件选择窗口,选择文件即可 。
文章插图
选择后右侧显示命令 。
普通执行
点击
单步执行或者点击
连续执行 。
执行中画面
此时可以选择是否开启声音以及是否重置,点击上一步可回退执行 。
当程序执行完所有命令后显示污染次数 。
带清洗功能的执行
选择"加入清洗功能",显示清洗 Input 与
文章插图
此时只有"下一步"可用,点击可出现自动移动的清洗液滴(同心圆) 。
清洗功能可以取消 。
清洗过程中可以点击方块添加障碍,在下一次执行"下一步时"会自动避开此障碍 。
2.设计说明
程序文件树:
其中主要有以下类:
class Kernel : public QObject//管理数据{Q_OBJECTpublic:Cube CubeData[14][14];//格子的数据int Width = 8;int Height = 8;QVector InputPositions;Position OutputPosition;QStringList Orders;int Time = -1;//时间int Interval = 700; //间隔时间msint KindNumber = 0;//液滴总数bool Sound = true;bool Wash = false;//是否清洗状态QVector ColorName;};http://www.biyezuopin.vipclass Cube{//单个格子的数据public:Position Other = Position(0, 0);//用于Split与Merge中间状态int kind = -1;//now drop kindbool Expanding = false;//now ecllipsebool blocked = false;//是否是阻挡方块bool Washing = false;//是否是清洁液滴QVector PolluteKinds;//Polluted Drop Kinds};struct Position{//封装位置数据public:int X;int Y;};class PaintWidget : public QWidget//继承自QWidget的自定义类,加入数据管理与绘图功能{Q_OBJECTpublic:http://www.biyezuopin.vipexplicit PaintWidget(QWidget *parent = nullptr);void paintEvent(QPaintEvent *);//绘图函数Kernel * kernel = nullptr;QVector InputPositions_draw;Position OutputPosition_draw = Position(0,1);bool end = false;//是否结束};
程序有两个 UI 窗口:一个主界面,一个用来设定基本属性的对话框 。
数据管理与操作在类中实现,UI 界面类( 类,类)中有指向的指针,用于实现 UI 界面与数据内核的分离 。
【数字微流控生物芯片模拟界面】操作事件一般会触发 UI 界面类的槽函数,进而调用里对应的操作槽函数 。
- 微流控芯片建模分析技术与应用
- 短信监控器
- 【C++ Caffe】Ubuntu下 手写体数字识别
- 自主控制系统分配:包含一个MATLAB Simulink仿真
- 一 MONGODB 监控那些基本 “点” 到东拉西扯
- 京阳科技冲刺上交所:半年营收8亿 王爱平父子控制42%股权
- HDC 2020:华为DTM为数字营销注入新活力
- NFT的核心精神是数字物品的物理化,而非原子物品的上链
- 【自定义控件】圆形时钟
- 搭建前端监控,如何采集异常数据?