メニューまたは 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);
uiConfigureCalibration
メイン フィギュアが近くにある場合、サブ gui はそうではなく、メイン gui のフィギュア ハンドルが無効なため、サブ gui (ここでは ) を閉じるとクラッシュし
ます。
メイン gui を閉じる前に、どうすれば matlab のすべてのサブ gui を閉じることができますか?
EDIT:呼び出されたダイアログがそのハンドルをメインダイアログのハンドルに保存するようにコードを変更しました
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);
しかし、それは何も変わりません。サブダイアログの図は、メイン ダイアログが閉じた後にのみ閉じられ、コード全体が再びクラッシュします。
サブダイアログの図形がcloseコマンドで閉じられないのはなぜですか?