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

 Risposta accettata

Adam
Adam il 4 Nov 2016
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 Commenti

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 il 4 Nov 2016
Modificato: Adam il 4 Nov 2016
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
Thank you so much, I managed to get it to work.
In GUIDE the last 'end' is not allowed though, fyi

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by