Matlab中uitabpanels之间的平滑过渡(光学效应)

时间:2011-06-06 11:32:33

标签: user-interface function matlab uicontrol

我设计了一组三个uitabpanels对象。

  htab = uitabgroup('v0');
  th1 = uitab('v0',htab,'title','Panel 1','ButtonDownFcn',...
      @th1_ButtonDownFcn);
  th2 = uitab('v0',htab,'title','Panel 2','ButtonDownFcn',...
      @th2_ButtonDownFcn);
  th3 = uitab('v0',htab,'title','Panel 3','ButtonDownFcn',...
      @th3_ButtonDownFcn);

当我通过鼠标点击更改选定的uipanel时,我的意图是在它们之间进行平滑过渡。我假装使用ButtonDownFcn函数来实现它改变其中包含的元素的“Visible”属性(我基于this page的描述部分得到了这个想法。)

    set(handles.th2,'Visible','off');
    set(handles.th3,'Visible','off');
...
  function th1_ButtonDownFcn(hObject, eventdata)
  handles = guidata(fh);
  set(handles.th1,'Visible','on');
  set(handles.th2,'Visible','off');
  set(handles.th3,'Visible','off'); 
  guidata(fh,handles);
  end

  function th2_ButtonDownFcn(hObject, eventdata)
  handles = guidata(fh);
  set(handles.th1,'Visible','off');
  set(handles.th2,'Visible','on'); 
  set(handles.th3,'Visible','off');
  guidata(fh,handles);
  end

  function th3_ButtonDownFcn(hObject, eventdata)
  handles = guidata(fh);
  set(handles.th1,'Visible','off');
  set(handles.th2,'Visible','off');
  set(handles.th3,'Visible','on');
  guidata(fh,handles);      
  end

其中

fh:图中的句柄包含uitabpanels。

handles.th1,handles.th2,handles.th3:分别包含在每个uitabpanel中的元素的句柄。

然而,它没有奏效(我点击每个uitabpanel的标签,它们的可见性不会改变),我不明白为什么。

1 个答案:

答案 0 :(得分:0)

总之,当您单击选项卡的标签时,UITAB的ButtonDownFcn和SelectionChangeFcn函数已处于活动状态。因此,不可能实现所需的目标(平滑的光学过渡),因为获得的结果(修改上述功能)与无所事事相同。