我有两个gui,一个是主gui,另一个是子gui。在主 gui 的打开功能中,我使用了 open('subgui.fig'); 打开子 gui。主要由5个编辑框和一个按钮组成。按下按钮后,这 5 个编辑框中的数据应传递给子 gui,主 gui 应关闭。请任何人帮助我做到这一点。
2689 次
3 回答
1
让我们举一个简单的例子one editbox and one pusbutton in main GUI
,one 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 回答