主要内容

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

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

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

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

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

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

流程概述

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

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

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

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

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

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

“发送信息到对话框”

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

  1. 属性的输入参数startupFcn回调函数,然后向回调函数添加代码。打开对话框应用进入代码视图.在编辑器选项卡上,单击App输入参数.在App输入参数对话框中,为输入参数输入以逗号分隔的变量名列表。将其中一个输入指定为存储主app对象的变量。然后单击好吧

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

    添加代码到startupFcn的值mainapp

    函数startupFcn(应用,mainapp,深圳,c)商店主应用程序对象app.CallingApp = mainapp;处理sz和c输入...结束

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

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

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

  3. 在主应用程序中定义一个属性来存储对话框应用程序。保持主应用程序打开,创建一个名为DialogApp.选择财产>私有财产编辑器选项卡。中的属性名属性DialogApp

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

返回信息到主应用程序

执行这些步骤将用户的选择返回到主应用程序。

  1. 在主应用中创建一个公共函数来更新UI。打开主应用进入代码视图并选择函数>公共函数编辑器选项卡。

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

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

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

  2. 在对话框app中创建一个属性来存储主应用程序。打开对话框app到代码视图,并创建名为CallingApp.选择财产>私有财产编辑器选项卡。中的属性名属性CallingApp

    属性(Access = private) CallingApp应用程序主对象结束

  3. 在对话框应用程序中的回调函数中调用公共函数。保持对话框应用程序打开,为好吧按钮。

    在此回调中,传递CallingApp属性和用户对公共函数的选择。然后调用删除函数关闭对话框。

    函数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)删除(应用)结束

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

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

相关的话题