【MATLAB appdesigner】15_不同app界面之间的数据传递(2)(有实例,超详细!)

创作时间:2021-04-19

Readme:
续接前面两篇文章,本文讲述一种最常用的多app界面的数据传递方法,即就是: 借助公有函数进行参数传递.

本文目录:

1.demo演示
2.如何实现?
2.1 功能模块分解
2.2 详细步骤

正文:
1.举例说明
App 之间共享数据的方式取决于你的设计形式。
这里,我介绍一种最常见的设计形式,即就是: 包含两个 App:一个主main App 和一个对话框dialog box。.
如下图:
【MATLAB appdesigner】15_不同app界面之间的数据传递(2)(有实例,超详细!)_第1张图片
demo演示如下:.

【MATLAB appdesigner】15_不同app界面之间的数据传递(2)(有实例,超详细!)_第2张图片
该demo包括两个界面,主界面和对话框界面。
主界面用于绘图,对话框界面用于输入参数。
1)主界面
a)文件名:MainAppExample.mlapp
b) uifigure名:Dsiplay Plot

2)子界面的文件名:
a)文件名:DialogAppExample.mlapp
b) uifigure名:Options

demo功能说明:.

1.运行主界面;
2.点击主界面的Button控件 (名为Options),弹出对话框界面,与此同时,关闭Button 控件的使能;
3.在子界面中editfield 控件(名为sample size 和color)中输入参数sample size和color;
4.点击子界面Button控件 (名为ok),参数传递到主界面,并进行主界面绘图区的图形更新,此时再次打开Button 控件的使能;

2.如何实现?
1.首先是在主界面中调用子界面
这里是重点,尤其是注释的这几句.

%主界面代码区
% Button pushed function: OptionsButton回调
   function OptionsButtonPushed(app, event)
        % 关闭OptionsButton控件的使能
        app.OptionsButton.Enable = 'off';
        %打开子界面并给参数赋值
        app.DialogApp = DialogAppExample(app, app.CurrentSize, app.CurrentColormap);
        %%这句代码如果看不懂,请参考13,14课内容。
        % 相当于调用了子界面的StartupFcn(app, mainapp, sz, c)
    end

2.子界面中输入参数

%子界面代码区
% Button pushed function: OkButton
      function ButtonPushed(app, event)
           % 调用主界面的公有函数
           updateplot(app.CallingApp, app.EditField.Value, app.DropDown.Value);
            % 关闭子界面app
           delete(app)
       end

3.主界面的公有函数

%主界面代码区
methods (Access = public)%公有函数
  function updateplot(app, sz, c)
       %将输入保存到属性中
       app.CurrentSize = sz;
       app.CurrentColormap = c;
       % 更新绘图
       Z = peaks(sz);
       surf(app.UIAxes,Z);
       colormap(app.UIAxes,c);
       % 重新恢复OptionsButton使能
       app.OptionsButton.Enable = 'on';
   end
        
    end

4.主界面的属性和startup

properties (Access = private)
        DialogApp                   % Dialog box app
        CurrentSize = 35;           % Surface sample size%给定了初值
        CurrentColormap = 'Parula'; % Colormap%给定了初值
    end
function startupFcn(app)
      % Call updateplot to display an initial plot
      updateplot(app, app.CurrentSize, app.CurrentColormap)
  end

5.子界面的属性和startup

properties (Access = private)
      CallingApp   % Main app object
  end
function StartupFcn(app, mainapp, sz, c)
     %子界面初始化,赋值3个,CallingApp和两个参数
     app.CallingApp = mainapp;
     
     % Update UI with input values
     app.EditField.Value = sz;
     app.DropDown.Value = c;
 end

6.子界面的Close request function

Close request function: UIFigure
  function DialogAppCloseRequest(app, event)
      % Enable the Plot Opions button in main app
      app.CallingApp.OptionsButton.Enable = 'on';
      
      % Delete the dialog box 
      delete(app)

具体,可以观看本节 视频(正在录制中,敬请期待~·).


THE END~
不积小流无以成江海,不积跬步无以至千里。

【MATLAB appdesigner】15_不同app界面之间的数据传递(2)(有实例,超详细!)_第3张图片

【MATLAB-app】系列教程(含视频)00_csdn上第一套关于matlab appdesigner系列“视频课”来啦~~

【图像算法&MATLAB】一文讲明白:图像的直方图均衡化(附作者自编源代码)

【探测器与相机标准】我对图像(图像传感器/相机)“非均匀性”的理解与学习笔记

你可能感兴趣的:(matlab,matlab,gui)