0

我有两个gui,一个是主gui,另一个是子gui。在主 gui 的打开功能中,我使用了 open('subgui.fig'); 打开子 gui。主要由5个编辑框和一个按钮组成。按下按钮后,这 5 个编辑框中的数据应传递给子 gui,主 gui 应关闭。请任何人帮助我做到这一点。

4

3 回答 3

1

让我们举一个简单的例子one editbox and one pusbutton in main GUIone editbox in sub GUI它将从主 GUI 的编辑框中获取值。可以根据需要轻松地将其扩展到尽可能多的编辑框。数据存储和检索的基本媒介将是一个全局结构data1

为了理解代码,让我们采取以下假设 -

  • 主 GUI 被命名为main_gui.m并因此具有 main_gui.fig来自 GUIDE 的关联。主 GUI 的图形有标签main_gui_figure
  • 子 GUI 被命名为sub_gui.m并因此具有sub_gui.fig 来自 GUIDE 的关联。

在 main_gui.m 中进行的编辑

在编辑框的回调中,添加这个 -

global data1;

%%// Field in data1 to store the string in editbox from main GUI
data1.main_gui.edit1val = get(hObject,'String'); 

在按钮的回调中,在它返回之前添加它 -

global data1;
sub_gui;
delete(handles.main_gui_figure);

在 sub_gui.m 中进行的编辑

在 sub_gui_OpeningFcn 中,添加 -

global data1;
set(handles.edit1,'String',data1.main_gui.edit1val);%%// Tag of editbox in sub-gui is edit1

希望这对你有用!让我们知道!

于 2014-03-20T08:53:52.953 回答
0

实现这一目标的方法可能不止一种。但是其中一种方法是定义一个接受两个输入参数的函数:1)目标图形的句柄和 2)来自源图形的任何数据。

以下伪代码不一定在 MATLAB 中运行,但它给出了基本思想:

function takeAction(uihdls, data)
  set(0, 'CurrentFigure', uihdls.fig); % uihdls.fig is the handle of the destination figure.

  set(gcf, 'CurrentAxes', uihdls.aexs1); % axes1 is inside fig
  plot(data.x, data.y); % Do some plotting

  set(uihdls.editBox, 'String', data.string); % Modify some property of a control inside fig.

  key_Callback(uihdls.fig, data.keyData); % Call a callback function of the destination figure

return

只要源图形准备好,就可以调用此函数。

于 2014-03-20T08:26:21.310 回答
0

多一点工作 - 但我认为这是值得的。

我通常为此使用MVC 模式。实际上,这意味着编写一个控制器对象,将消息传递到所需的字段。

于 2014-03-20T09:25:20.300 回答