Matlab界面中选项卡的切换

Matlab界面中选项卡的切换

界面采用matlab/GUIDE设计,若直接采用actxcontrol函数创建TabStrip控件,则不仅要在GUI窗口显示到屏幕之后才能使用actxcontrol函数(可以在OutputFcn函数中使用actxcontrol函数,而不能在OpeningFcn函数中使用),而且,同样不能创建TabStrip控件的回调函数。因此,软件编制过程中用到了选项卡ActiveX控件Microsoft TabStrip Control 6.0(SP4),这样可以方便调用TabStrip控件的回调函数。
GUIDE创建的TabStrip控件,不能直接在属性编辑器中设置大部分属性,而只能在OpeningFcn函数中通过代码设置其属性。
由于各标签页内的GUI对象相互覆盖,如果都放在一个GUI布局区中,设计起来很不方便。解决此问题的办法是:多创建几个GUI,分别在各子GUI的布局区内设计好标签页面内容,以及各GUI对象的回调函数,然后在主GUI的OpeningFcn函数中将其复制进来。
这里有两点要注意:
(1)子界面对象复制到主界面后,虽然回调函数也可以使用,但是由于在主界面中不能调用子界面的handles,因此,子界面对象的回调函数中,不得使用handles。
(2)若子界面内的对象Tag与主界面对象的Tag值冲突,可能会引起调用冲突。因此,将子界面内与主界面内Tag值设置为不同的名称。

- **function main1_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to main1 (see VARARGIN)

% Choose default command line output for main1
handles.output = hObject;

%将2个GUI(优化子功能)内的面板及其子对象复制到主界面中面板的位置
h2=youhua('Visible','off');%打开优化子界面并隐藏
hPal2=copyobj(findobj(h2,'Type','uipanel','Tag','uipanel2'),hObject);%将优化子界面内的面板及其子对象复制过来
set(hPal2,'Position',get(handles.uipanel1,'Position'),'Visible','off');%将复制过来的面板隐藏
handles.hPal2=hPal2;%将复制过来的面板句柄加入handles,便于回调函数调用
global hAxes2;
hAxes2=copyobj(findobj(h2,'Type','axes','Tag','youhua_axes'),hObject);%将优化子界面内的坐标轴复制过来
set(hAxes2,'Visible','off');%将复制过来的按钮隐藏
handles.hAxes2=hAxes2;%将复制过来的坐标轴句柄加入handles,便于回调函数调用
global hButton2;
hButton2=copyobj(findobj(h2,'Type','uicontrol','Tag','youhua_pushbutton1'),hObject);%将优化子界面内的按钮复制过来
set(hButton2,'Visible','off');%将复制过来的按钮隐藏
handles.hButton2=hButton2;%将复制过来的按钮句柄加入handles,便于回调函数调用
global hListbox2;
hListbox2=copyobj(findobj(h2,'Type','uicontrol','Tag','youhua_listbox1'),hObject);%将优化子界面内的列表框复制过来
set(hListbox2,'Visible','off');%将复制过来的按钮隐藏
handles.hListbox2=hListbox2;%将复制过来的列表框句柄加入handles,便于回调函数调用
global h2_flag;%选项卡点击标志
h2_flag=0;%0表示未点击,1表示已点击
handles.h2_flag=h2_flag;
delete(h2);%删除隐藏的子界面

%将
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值