我可以用菜单或 x 按钮关闭我的主 gui
function menuProgramQuit_Callback(hObject, eventdata, handles)
close(handles.figure1);
但是同时可能会打开一个子 gui 对话框
function pushbuttonCalibrationConfigure_Callback(hObject, eventdata, handles)
calibrationOutput = uiConfigureCalibration('uiMain', handles.figure1);
waitfor(calibrationOutput);
guidata(handles.output,handles);
如果主图形已关闭,则子 gui 不关闭,并且当他关闭 subgui(此处
uiConfigureCalibration
)时它会崩溃,因为主 gui 的图形句柄无效。
那么如何在关闭主 gui 之前关闭 matlab 中的所有子 gui?
编辑:我更改了代码,以便被调用的对话框将其句柄保存到主对话框的句柄
function uiConfigureCalibration_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for uiConfigureCalibration
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% save handle of calling gui
mainGuiHandleIndex = find(strcmp(varargin, 'uiMain'));
if ~isempty(mainGuiHandleIndex)
handles.mainHandle = varargin{mainGuiHandleIndex+1};
handlesMain = guidata(handles.mainHandle);
handlesMain.('openfigures').('calibration') = handles.figure1;
guidata(handles.mainHandle, handlesMain);
guidata(handles.figure1, handles);
end
在主 gui 的关闭功能中,我无法检查图形是否在主图形关闭之前打开和关闭
if isfieldRecursive(handles, 'handles.openfigures.calibration')
close(handles.openfigures.calibration);
end
close(handles.figure1);
然而,这并没有改变。子对话框图仅在主对话框关闭并且整个代码再次崩溃后才关闭。
为什么关闭命令没有关闭子对话框的图形?