基于Qt的汽车仪表模拟
在我准备开始写HUD的时候,发现一个新的问题。
那就是我开始将我的资源释放都写在了控制台的析构函数中,但是呢,在程序结束的时候却不会释放我的资源,这点搞得我好烦啊,析构函数不就是在程序结束的时候释放资源吗。
那么具体表示就是我在控制台中创建了HUD窗口,并且在控制台的析构函数中实现了对HUD窗口的回收。但是呢,结果却是当我结束控制台程序的时候,HUD窗口并没有随之消失,依旧显示在说面上。代码如下
ControlPanel::~ControlPanel() { if(timer_Change_Jianwei_Color) { timer_Change_Jianwei_Color->stop(); delete timer_Change_Jianwei_Color; timer_Change_Jianwei_Color = NULL; } if(timer_Get_Current_Time) { timer_Get_Current_Time->stop(); delete timer_Get_Current_Time; timer_Get_Current_Time = NULL; } if(myHUD) { myHUD->close(); delete myHUD; myHUD = NULL; } delete ui; }
对应的解决方法是啥,其实很很简单,就是我自己写一个资源回收的含,在控制台程序结束的时候先调用我的资源回收,完了吧控制台的关闭函数写在我的资源函数回收里面就好了。代码如下
void ControlPanel::my_Close() { if(timer_Change_Jianwei_Color) { timer_Change_Jianwei_Color->stop(); delete timer_Change_Jianwei_Color; timer_Change_Jianwei_Color = NULL; } if(timer_Get_Current_Time) { timer_Get_Current_Time->stop(); delete timer_Get_Current_Time; timer_Get_Current_Time = NULL; } if(myHUD) { myHUD->close(); delete myHUD; myHUD = NULL; } this->close(); }