13.如何通过定义figure 的CloseRequestFcn函数,设置两个或多个界面的切换
刚开始接触GUI ,进行两个界面切换时,总是将两个面板先后叠加,又要重新定义父与子的关系,一旦需要对某个控件进行修改,则非常麻烦。
现在掌握了一个小技巧,可以新建两个或多个figure,其中一个figure为主界面,通过全局变量并设置主界面和其他界面的CloseRequestFcn函数,实现主界面控制其他界面,某个界面出现出题,只需对指定的figure进行修改。
示例
1:新建一个主界面和子界面,并绘制静态界面
、
2:编辑主界面和子界面的CloseRequestFcn函数
主界面:
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global H
if (H==1)
close(sub_figure);
end
% Hint: delete(hObject) closes the figure
delete(hObject);
子界面:
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global H
H=0;
% Hint: delete(hObject) closes the figure
delete(hObject);
3 :编辑主界面的控件,从而点击控件即可实现子界面的显示。
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global H
sub_figure;
H=1;
4 关闭子界面,主界面不会退出,但是关闭主界面,子界面会随之退出。