GUI多界面数据传递.pdf
- 文档编号:3176171
- 上传时间:2022-11-19
- 格式:PDF
- 页数:5
- 大小:98.75KB
GUI多界面数据传递.pdf
《GUI多界面数据传递.pdf》由会员分享,可在线阅读,更多相关《GUI多界面数据传递.pdf(5页珍藏版)》请在冰豆网上搜索。
专题8GUI对象之间的数据传递【例6.3.1】设计两个GUI界面,分别如图6.51所示:
图6.51例6.3.1图要求:
(1)双击主界面的选项,将该选项文本传递到次界面的可编辑文本框中显示出来,并隐藏主界面;
(2)点击次界面的【返回】按钮,隐藏次界面,显示主界面。
【解析】创建GUI窗口mainfig,或得到已存在的GUI窗口mainfig的句柄,可使用下列语句:
h=figure(mainfig);窗口之间的相互操作,可以采用global函数传递数据,采用findobj或findall函数获取其它窗口对象的句柄,采用mat文件传递数据,采用输入参数传递数据,还可以采用输出参数与uiwat、uiresume组合使用的方式传递数据。
本例采用上述5种方法分别编写对应的回调函数。
步骤:
步骤:
打开GUIDE编辑器,创建两个GUI,如图6.52所示。
图6.52例6.3.1的GUIDE布局设置主界面的对象属性:
a)figureName主界面;b)ListBoxFontSize10;String张三(回车)李四(回车)王五(回车)孙六;Taglistbox1。
设置次界面的对象属性:
a)figureName次界面。
b)EditTextFontSize10;String空字符串;Tagedit1。
c)PushButtonFontSize10;String返回。
编写回调函数。
方法1:
采用global函数传递数据。
a)主界面ListBox的Callback函数为:
%若双击左键,将所选中的选项文本传给次界面globalstr;ifisequal(get(gcf,SelectionType),open)n=get(hObject,value);%获取所选中选项的索引号str_all=get(hObject,string);%得到列表框的所有文本str=str_alln;set(gcf,Visible,off);%隐藏主界面nextfig(Visible,on);endb)次界面OpeningFcn函数为:
handles.output=hObject;%以下为添加的代码globalstrset(handles.edit1,String,str);%以上为添加的代码guidata(hObject,handles);c)次界面PushButton的Callback函数为:
%隐藏次界面,显示主界面set(gcf,Visible,off);mainfig(Visible,on);方法2:
采用findall函数传递数据。
a)主界面ListBox的Callback函数为:
%若双击左键,将所选中的选项文本传给次界面ifisequal(get(gcf,SelectionType),open)n=get(hObject,value);%获取所选中选项的索引号str_all=get(hObject,string);%得到列表框的所有文本set(gcf,Visible,off);%隐藏主界面h=figure(nextfig);%打开次界面并获取其窗口句柄;若次界面已经打开,获取其句柄%上一条语句也可以为:
h=nextfig;set(h,Visible,on);%设置次界面窗口为可见h_edit=findall(h,Tag,edit1);%在次界面中查找可编辑文本框对象set(h_edit,string,str_alln)%设置所选的选项文本给可编辑文本对象endb)次界面PushButton的Callback函数为:
%隐藏次界面,显示主界面set(gcf,Visible,off);h=figure(mainfig);%也可以为:
h=mainfig;set(h,Visible,on);方法3:
采用mat文件传递参数。
a)主界面ListBox的Callback函数为:
%若双击左键,将所选中的选项文本传给次界面ifisequal(get(gcf,SelectionType),open)n=get(hObject,value);%获取所选中选项的索引号str_all=get(hObject,string);%得到列表框的所有文本str=str_alln;savestrInfostr;%将选项文本存储到strInfo.mat文件中set(gcf,Visible,off);%隐藏主界面nextfig(Visible,on);endb)次界面OpeningFcn函数为:
handles.output=hObject;%以下为添加的代码loadstrInfostr;%加载strInfo.mat文件中的变量strset(handles.edit1,String,str);%以上为添加的代码guidata(hObject,handles);c)次界面PushButton的Callback函数为:
%隐藏次界面,显示主界面set(gcf,Visible,off);mainfig(Visible,on);方法4:
采用输入参数传递数据。
a)主界面ListBox的Callback函数为:
%若双击左键,将所选中的选项文本传给次界面ifisequal(get(gcf,SelectionType),open)n=get(hObject,value);%获取所选中选项的索引号str_all=get(hObject,string);%得到列表框的所有文本str=str_alln;set(gcf,Visible,off);%隐藏主界面h=nextfig(strInfo,str);set(h,Visible,on);endb)次界面OpeningFcn函数为:
handles.output=hObject;%以下为添加的代码%OpeningFcn函数的输入参数个数为5时,varargin为12的单元数组if(nargin=5)&(strcmp(varargin1,strInfo)set(handles.edit1,String,varargin2);end%以上为添加的代码guidata(hObject,handles);c)次界面PushButton的Callback函数为:
%隐藏次界面,显示主界面set(gcf,Visible,off);mainfig(Visible,on);方法5:
采用输出参数与uiwat、uiresume组合的方式传递数据。
a)主界面的OpeningFcn函数为:
handles.output=hObject;guidata(hObject,handles);%以下为添加的代码uiwait(hObject);b)主界面OutputFcn函数为:
varargout1=handles.output;%以下为添加的代码n=get(handles.listbox1,value);%获取所选中选项的索引号str_all=get(handles.listbox1,string);%得到列表框的所有文本varargout2=str_alln;c)主界面ListBox的Callback函数为:
ifisequal(get(gcf,SelectionType),open)uiresume(gcf);endd)次界面OpeningFcn函数为:
handles.output=hObject;%以下为添加的代码h,str=mainfig;delete(h);set(handles.edit1,String,str);%以上为添加的代码guidata(hObject,handles);e)次界面PushButton的Callback函数为:
%先显示主界面,再显示次界面set(gcf,Visible,off);h,str=mainfig;delete(h);set(handles.edit1,String,str);set(handles.figure1,Visible,on);对于前4种方法,运行主界面GUI;对于第5种方法,运行次界面GUI。
运行结果如图6.53所示。
图6.53例6.3.1运行结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GUI 界面 数据 传递