PDA

查看完整版本 : [MATLAB GUI] 求教关于GUI中子窗体调用主窗体参数的问题


wang1234587
2013-04-19, 19:08
我已经利用setappdata和getappdata将子窗体A中的一个参数m返回给了主窗体的n,主窗体可以正常使用n,我想问的是我的这个主窗体还包含一个子窗体B,那么我的子窗体B如何调用主窗体中的参数n呢?或者是子窗体A中的m呢?
我的问题有两个:
1、如何使子窗体B调用主窗体参数
2、如何使子窗体B直接调用子窗体A的参数
小弟现在只会主窗体调用子窗体参数,以上这两个不会,请尽量讲的详细点,最好举例说明,我是菜鸟啊
最好是不用重新运行被调用参数所属窗体的办法

wang1234587
2013-04-20, 11:24
都没人,我已经会了,分享下
哈哈,我今天早上又上网找了找,终于找到方法,可以不打开别的窗体实现参数传递,还是利用setappdata和getappdata来实现的,我给你说下啊
先说下这个小实验的功能,在主窗体下,有两个子窗A和B,在A中有一个edit和pushbutton用来传递需要被传递的值,然后在B中也有一个edit和pushbutton用来显示被传递的值。
实现过程:
1、在主窗体中编写代码,有两个菜单按钮,分别链接子窗A和子窗B;
2、在需要把数据传递出去的窗体即子窗A的pushbutton的callback中编写代码:
txt=get(handles.edit,'string'); %将edit的值赋给txt
setappdata(0,'out',txt); %利用setappdata将txt的数据赋给变量out,这条语句中参数0的位置本应是被传递参数所属窗体的句柄,这里替换成0,意思就是直接把数据保存在matlab工作区间,使out具有全局变量的作用,当然比全局变量好
3、在需要接收传递值的窗体即子窗B的pushbutton的callback中编写代码:
in=getappdata(0,'out'); %利用getappdata将工作区间中的out的值赋给in
set(handles.edit,'string',in); %将in的值显示在edit中