Assign same panel to different tabs UITAB

I am currently trying to create a gui in GUIDE. I have created 2 tabs using uitab in a uitabgroup. I have 2 panels, of which 1 is changing when you switch between tabs (panel P1a and P1b). The other should remain the same (P2). My question is, how can I see panel P2 in both tabs? Code is as follows:
handles.tgroup = uitabgroup('Parent', handles.figure1)
handles.tab1 = uitab('Parent', handles.tgroup, 'Title', 'Import Text')
handles.tab2 = uitab('Parent', handles.tgroup, 'Title', 'Import Excel')
set(handles.P1a,'Parent',handles.tab1)
set(handles.P2,'Parent',handles.tab1)
set(handles.P1b,'Parent',handles.tab2)
set(handles.P2,'Parent',handles.tab2)
Currently, this code does not work, since I only connect P2 to tab2 because of the last line.
Thanks, Reinier

 採用された回答

Adam
Adam 2016 年 11 月 4 日

0 投票

Just reparent it in the 'SelectionChangedFcn' callback of the uitabgroup. It only needs to be parented by a tab if that tab is the currently selected one since you can never view 2 tabs at the same time.

3 件のコメント

Reinier Tromp
Reinier Tromp 2016 年 11 月 4 日
編集済み: Reinier Tromp 2016 年 11 月 4 日
Thanks, that sounds like it should work. Is there a way to specify in GUIDE the SelectionChangedFcn callback of the uitabgroup? I am unsure how to code it in the current structure (usually callbacks are created automatically when I create the lay-out in GUIDE). Currently I have tried this (based on my previous code):
function tgroup_SelectionChangedFcn(hObject,eventdata,handles)
selectedTab = get(hObject,'SelectedTab');
if strcmp(selectedTab,'Import Text')==1
set(handles.P2,'Parent',handles.tab1)
elseif strcmp(selectedTab,'Import Excel')==1
set(handles.P2,'Parent',handles.tab2)
end
guidata(hObject,handles);
Adam
Adam 2016 年 11 月 4 日
編集済み: Adam 2016 年 11 月 4 日
Tabs are not supported in GUIDE so you have to do them programmatically, but I assume you have already created your uitabgroup programmatically anyway?
Something similar to this should work
hPanel = uipanel( ... )
hMainTabGroup = uitabgroup( ...
'Parent', hFig,...
'SelectionChangedFcn', @(src,evt) tabChangedCallback( evt, hPanel ) );
function tabChangedCallback( evtData, hPanel )
hPanel.Parent = evtData.NewValue;
end
Reinier Tromp
Reinier Tromp 2016 年 11 月 4 日
Thank you so much, I managed to get it to work.
In GUIDE the last 'end' is not allowed though, fyi

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

質問済み:

2016 年 11 月 4 日

コメント済み:

2016 年 11 月 4 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by