主要内容

在应用程序设计器创建多窗口应用程序

多窗口应用程序由两个或多个共享数据的应用程序组成。在应用程序之间共享数据的方式取决于设计。一种常见的设计包括两个应用程序:一个主应用程序和一个对话框。通常,主应用程序有一个打开对话框的按钮。当用户关闭对话框时,对话框将用户的选择发送到主窗口,主窗口执行计算并更新UI。

一个主应用程序窗口和一个对话框窗口,两者之间有一个双面箭头

这些应用程序在不同的时间以不同的方式共享信息:

  • 当对话框打开时,主应用程序通过调用带有输入参数的对话框应用程序来将信息传递给对话框。

  • 当用户单击好吧按钮,对话框通过调用带有输入参数的主应用程序中的公共函数将信息返回给主应用程序。

流程概述

要创建上一节中描述的应用程序,您必须创建两个独立的应用程序(一个主应用程序和一个对话框应用程序)。然后执行这些高级任务。每个任务都涉及多个步骤。

  • “发送信息到对话框”-写一个StartupFcn在对话框应用程序中接受输入参数的回调。其中一个输入参数必须是主app对象。然后,在主程序中,用输入参数调用对话框程序。

  • 返回信息到主应用程序-在主应用程序中编写一个公共函数,根据用户在对话框中的选择更新UI。因为它是一个公共函数,对话框应用程序可以调用它并将值传递给它。

  • 当窗口关闭时进行管理- - -写CloseRequest当Windows关闭时,两个应用程序中执行维护任务的回调。

要查看此过程中所有步骤的实现,请参见绘图应用程序打开一个对话框

如果你计划将你的应用程序部署为web应用程序(需要MATLAB®编译器™),不支持创建多个应用Windows。万博1manbetx相反,考虑创建一个带有多个选项卡的单窗口应用程序。有关更多信息,请参见Web应用程序限制和不支持的功能万博1manbetx(MATLAB编译器)

“发送信息到对话框”

执行以下步骤将值从主应用程序传递到对话框应用程序。

  1. 属性的输入参数StartupFcn回调函数。在代码视图,在编辑器选项卡上,单击App输入参数.在App Details对话框中,为输入参数输入一个以逗号分隔的变量名列表。指定这些输入:

    • 主应用程序-将主应用程序对象传递给对话框应用程序,以便您可以从对话框应用程序代码中引用主应用程序的函数和属性。

    • 附加数据——传递对话框应用程序需要访问的主应用程序中定义的任何附加数据。

    点击好吧

    应用程序输入参数对话框。为startupFcn回调函数指定输入参数的编辑字段包含变量名“caller”、“sz”和“c”。

  2. 在对话框app中,添加代码来存储主app对象。

    1. 首先,定义一个属性来存储主应用程序代码视图,在编辑器选项卡上,选择财产>私有财产.中的属性名属性CallingApp

      属性(Access = private) CallingApp%主应用结束

    2. 然后,在StartupFcn回调函数中,添加代码以存储主应用程序对象CallingApp财产。

      函数StartupFcn(应用程序,调用者,深圳,c)商店主应用程序对象app.CallingApp = caller;处理sz和c输入%……结束

      的完整编码示例StartupFcn回调,看绘图应用程序打开一个对话框

  3. 在主应用程序中,从回调中调用对话框应用程序来创建对话框。

    1. 首先,定义一个属性来存储对话框应用程序代码视图,在编辑器选项卡上,选择财产>私有财产.中的属性名属性DialogApp

      属性(Access = private%对话框应用结束

    2. 的回调函数选项按钮。此回调将禁用选项按钮,防止用户打开多个对话框。接下来,它获取要传递给对话框的值,然后用输入参数和输出参数调用对话框应用程序。输出参数是对话框app对象。

      函数OptionsButtonPushed(应用程序、事件)对话框打开时禁用“绘图选项”按钮app.OptionsButton.Enable =“关闭”得到样本大小和颜色图%……使用输入值调用对话框app. dialogapp = DialogAppExample(app,szvalue,cvalue);结束

      有关回调的完整编码示例,请参见绘图应用程序打开一个对话框

返回信息到主应用程序

执行以下步骤将用户从对话框应用程序中的选择返回到主应用程序。

  1. 在主应用程序中,创建一个用于更新UI的公共函数。打开主应用程序代码视图,在编辑器选项卡上,选择函数>公共函数

    将默认函数名更改为所需的名称,并为您想从对话框传递到主应用程序的每个选项添加输入参数应用程序参数,它表示主应用程序对象,必须是第一个,所以在该参数之后指定额外的参数。然后向处理输入和更新主应用程序的函数中添加代码。

    函数updateplot (app,深圳,c)处理sz和c...结束

    有关公共函数的完整编码示例,请参见绘图应用程序打开一个对话框

  2. 在对话框应用程序中,从回调中调用公共函数。随着对话框的应用程序打开代码视图的回调函数好吧按钮。

    在此回调中,调用在应用程序主代码中定义的公共函数。传递主应用程序对象,存储在CallingApp属性,作为第一个参数。然后,传递主应用程序更新其UI所需的额外数据。最后,调用删除函数关闭对话框。

    函数ButtonPushed(应用程序、事件)调用主应用程序的公共函数updateplot (app.CallingApp app.EditField.Value app.DropDown.Value);删除对话框删除(应用)结束

当窗口关闭时进行管理

当用户关闭这两个应用程序时,它们必须执行某些任务。在对话框关闭之前,必须重新启用选项在主应用程序关闭之前,必须确保对话框已经关闭。

  1. 随着对话框的应用程序打开代码视图,右键单击app.UIFigure对象中的浏览器组件并选择回调>添加CloseRequestFcn回调.然后在主应用程序中添加重新启用按钮的代码并关闭对话框应用程序。

    函数DialogAppCloseRequest(应用程序、事件)启用主应用程序中的绘图选项按钮app.CallingApp.OptionsButton.Enable =“上”删除对话框删除(应用)结束

  2. 打开主应用程序代码视图,右键单击app.UIFigure对象中的浏览器组件并选择回调>添加CloseRequestFcn回调.然后添加关闭两个应用程序的代码。

    函数MainAppCloseRequest(应用程序、事件)%删除两个应用程序删除(app.DialogApp)删除(应用)结束

示例:绘图应用程序打开一个对话框

这个应用程序由一个主绘图应用程序组成,该应用程序有一个按钮,用于在对话框中选择选项。的选项按钮使用输入参数调用对话框应用程序。属性的回调函数好吧按钮通过调用主应用中的公共函数将用户的选择发送回主应用。

相关的话题