这几天也不知道咋地了,自从一口气把老板安排的测试说明写完以后,就和泄了气的皮球一样,一点都提不起劲,回头看这几天自己写的东西,一坨坨呀,各种命名都不统一,就这么几个函数,自己都分不清干啥了,简直没法看了呀,还是得好好理理头绪才是可以,不然到后面,那就是灾难。
目前整理如下,每个模块对应的初始化名称为init_XXX(ini initType);这样在以后就差不多都是这个函数就是用来初始化这个模块的。比如,在我的控制台启动后会初始化HUD、液晶仪表和多媒体。如下图所示。
其实这三个函数是有参数的,其函数声明如下
void init_HUD(bool isShow = true); void init_MeterDisplay(bool isShow = true); void init_MultifuncitonDisplay(bool isShow = true);
这三个函数的作用就是把HUD、液晶仪表和多媒体New出来,参数来控制显示不显示。当初想法是默认是不显示,至于为什么要先New了,为的是以后数据解析赋值使用。
这三个函数的的流程都是一样,如下
大致就是判断这个模块是否已经存在,如果存在了就判断是否显示,如果不存在就新建一个,再次判断是否显示。代码如下
/* * 初始化HUD * 目前就只是显示和关闭 */ void ControlPanel::init_HUD(bool isShow) { if(myHUD) { if(isShow) { myHUD->show(); } else { myHUD->hide(); } } else { myHUD = new HUD; myHUD->setGeometry(760,0,400,300); if(isShow) { myHUD->show(); } else { myHUD->hide(); } } } /* * 初始化液晶仪表显示控件 * 目前只写显示关闭 */ void ControlPanel::init_MeterDisplay(bool isShow) { if(myMeterDisplay) { if(isShow) { myMeterDisplay->show(); } else { myMeterDisplay->hide(); } } else { myMeterDisplay = new MeterDisplay; myMeterDisplay->setGeometry(0,300,1920,720); if(isShow) { myMeterDisplay->show(); } else { myMeterDisplay->hide(); } } } /** * @brief ControlPanel::init_MultifuncitonDisplay * @param isShow * 建立多媒体模块 */ void ControlPanel::init_MultifuncitonDisplay(bool isShow) { if(myMultifunctionDisplay) { if(isShow) { myMultifunctionDisplay->show(); } else { myMultifunctionDisplay->hide(); } } else { myMultifunctionDisplay = new MultifunctionDisplay; myMultifunctionDisplay->setGeometry(0,0,800,600); if(isShow) { myMultifunctionDisplay->show(); } else { myMultifunctionDisplay->hide(); } } }
在完成对着三个模块的初始化后,会调用一个叫做“init_MyCar”的函数,这个函数的作用就是调用上面三个模块对应的init函数,代码如下
/** * @brief ControlPanel::initMyCar * @param initType * @return * 模拟完成车辆上电、自检和启动过程 */ void ControlPanel::init_MyCar(int initType) { if(myHUD) { myHUD->init_HUD(initType); } if(myMeterDisplay) { myMeterDisplay->init_MeterDisplay(initType); } if(myMultifunctionDisplay) { myMultifunctionDisplay->init_MultifuncionDisplay(initType); } }
大致调用流程如下图