https://kr.mathworks.com/help/matlab/creating_guis/multiwindow-app-gui-in-app-designer.html
이 예제에서는 2개의 앱 간에 데이터를 전달하는 방법을 보여줍니다.
이 다중 창 앱은 입력 인수를 사용하여 대화 상자 앱을 호출하는 메인 앱으로 구성됩니다.
대화 상자는 메인 앱의 특성을 수정하는 데 사용할 수 있는 여러 옵션을 표시합니다.
사용자가 대화 상자를 닫으면 해당 선택 항목이 메인 앱으로 전송됩니다.
이 예제에서는 다음과 같은 앱 작성 작업을 수행하는 방법을 보여줍니다.
1. 입력 인수를 사용하여 앱 호출
2. 앱 객체인 반환 인수를 사용하여 앱 호출
3. 앱에서 퍼블릭 함수를 호출하여 앱에 값 전달
4. 각 앱이 닫힐 때 유지 관리 작업을 수행할 CloseRequestFcn 콜백 작성
DialogAppExample.mlapp
MainAppExample.mlapp
MainAppExample의 Options를 클릭하면 DialogAppExample가 팝업
→ DialogAppExample의 조정에 따라 MainAppExample가 변화하는 구조
1. MainAppExample
properties (Access = private) DialogApp % 대화상자 app CurrentSize = 35; % 샘플의 크기 CurrentColormap = "Parula"; % 컬러맵 end methods (Access = public) function updateplot(app, sz, c) % properties와 동일하게 입력값 저장 app. CurrentSize = sz; app. CurrentColormap = c; % plot의 업데이트 Z = peaks(sz); surf(app.UIAxes,Z); colormap(app.UIAxes,c); % Plot Options 버튼을 다시 활성화 app.OptionsButton.Enable = "on"; end end |
콜백 함수
구성 요소 생성 후 실행
function startupFcn(app) % 초기 플롯을 표시하려면 updateplot을 호출 updateplot(app, app.CurrentSize , app.CurrentColormap ) end |
Options 버튼 클릭 시 실행
function OptionsButtonPushed(app, event) % 대화 상자가 열려 있는 동안 Plot Options 버튼을 비활성화 app.OptionsButton.Enable = "off"; % 샘플 크기와 컬러맵을 가져옴 szvalue = app.CurrentSize; cvalue = app.CurrentColormap; % 옵션 대화 상자를 열고 입력 값을 전달함 app.DialogApp = DialogAppExample(app, szvalue, cvalue); end |
닫기
function MainAppCloseRequest(app, event) % Main App을 닫기하면 두 App 모두 닫힘 delete(app.DialogApp) delete(app) end |
2. DialogAppExample
properties (Access = private) CallingApp end |
콜백 함수
구성 요소 생성 후 실행
function StartupFcn(app, caller, sz, c) % CloseRequestFcn에서 사용하기 위해 주요 앱을 properties에 저장 app.CallingApp = caller; % 입력값에 따른 UI 업데이트 app.EditField.Value = sz; % EditField : Sample Size의 값 app.DropDown.Value = c; % DropDown : Colormap의 값 end |
OK 버튼 클릭 후 실행
function ButtonPushed(app, event) % 주요 앱의 공개 함수 호출 updateplot(app.CallingApp , app.EditField.Value, app.DropDown.Value); % 대화상자 삭제 delete(app) end |
닫기
function DialogAppCloseRequest(app, event) % 주요 앱이 여전히 열려 있다면 주요 앱에서 Plot Options 버튼을 활성화. if isvalid(app.CallingApp ) app.CallingApp .OptionsButton.Enable = "on"; end % 대화 상자 닫힘 delete(app) end |