Effacer les filtres
Effacer les filtres

How to hide a uitab with RadioButtonGroup?

4 vues (au cours des 30 derniers jours)
T B
T B le 17 Mai 2021
Commenté : T B le 17 Mai 2021
If I create my tab, some functions need much time. Because the user shouldn't see a half-finished tab, i hide the tab with
app.Tab1.Parent = [];
and unhide the tab at the end with
app.Tab1.Parent = app.TabGroup;
For the most objects, this procedure works fine. Now I added a RadioButtongroup and noticed that the group isn't visible.
Here is a possible Gui to recreate the problem:
classdef testgui < matlab.apps.AppBase
properties (Access = public)
UIFigure matlab.ui.Figure
TabGroup matlab.ui.container.TabGroup
tab_a matlab.ui.container.Tab
tab_b matlab.ui.container.Tab
NormalButton matlab.ui.control.Button
ButtonGroup matlab.ui.container.ButtonGroup
RButton1 matlab.ui.control.RadioButton
RButton2 matlab.ui.control.RadioButton
UIAxes matlab.ui.control.UIAxes
WelcomeLabel matlab.ui.control.Label
end
methods (Access = public)
function app = testgui(app)
app.start_app_tab_a()
pause(1)
app.create_tab_b()
app.tab_b.Parent = app.TabGroup;
app.TabGroup.SelectedTab = app.tab_b;
end
function app = start_app_tab_a(app)
app.UIFigure = uifigure();
app.UIFigure.Position = [100 100 800 500];
app.UIFigure.Name = 'UI Figure';
app.TabGroup = uitabgroup(app.UIFigure);
app.TabGroup.Position = [1 1 800 500];
app.TabGroup.Visible = "on";
app.tab_a = uitab(app.TabGroup);
app.tab_a.Title = "Tab A";
app.WelcomeLabel = uilabel(app.tab_a);
app.WelcomeLabel.Position = [250 250 200 20];
app.WelcomeLabel.Text = 'Wait here until Tab B looks fine';
end
function app = create_tab_b(app)
app.tab_b = uitab(app.TabGroup);
app.tab_b.Title = "Tab B";
% the Problem?
app.tab_b.Parent = [];
% Create UIAxes
app.UIAxes = uiaxes(app.tab_b);
app.UIAxes.Position = [200 200 400 250];
% pause = other functions
pause(3)
plot(app.UIAxes,randi(5,20,1),randi(5,20,1))
app.NormalButton = uibutton(app.tab_b, 'push');
% Button.ValueChangedFcn = createCallbackFcn(app, @ButtonPshued, true);
app.NormalButton.Position = [300 100 80 25];
app.NormalButton.Text = 'Button0';
%create RadioButtongroup
app.ButtonGroup = uibuttongroup(app.tab_b);
app.ButtonGroup.Position = [400 100 100 90];
app.RButton1 = uiradiobutton(app.ButtonGroup);
app.RButton1.Text = 'Option A';
app.RButton1.Position = [5 50 90 20];
app.RButton2 = uiradiobutton(app.ButtonGroup);
app.RButton2.Text = 'Option B';
app.RButton2.Position = [5 20 90 20];
app.RButton2.Value = true;
app.RButton1.Value = false;
end
end
end
If I delete this line
app.tab_b.Parent = [];
the user see the RadioButtonGroup, but the user could change the selected tab manually, before tab b is finished. The main question is, why do the radiobuttons disappear if I change the parent of the tab?

Réponse acceptée

T B
T B le 17 Mai 2021
If
tab.Parent = TabGroup
then the default is
app.ButtonGroup.Units = "pixels"
and if
tab.parent = []
then the default is
app.ButtonGroup.Units = "normalized"
Therefore the position [400 100 100 90] wasn't in the visible range. But why is Matlab doing this?
The solution of the problem is:
app.ButtonGroup = uibuttongroup(app.tab_b);
app.ButtonGroup.Units = "pixels";
app.ButtonGroup.Position = [400 100 100 90];

Plus de réponses (1)

Geoff Hayes
Geoff Hayes le 17 Mai 2021
Why not just hide or show the tab using the Visible property? For example, you could do
app.TabGroup = uitabgroup(app.UIFigure);
app.TabGroup.Position = [1 1 800 500];
app.TabGroup.Visible = false; % <----- hide the TabGroup
and then show it with
app.TabGroup.Visible = true;
Or maybe I'm misunderstanding what you are trying to accomplish?
  5 commentaires
Geoff Hayes
Geoff Hayes le 17 Mai 2021
That seems* like a bug then.
Have you seen Adam's answer from https://www.mathworks.com/matlabcentral/answers/550827-matlab-gui-tabgroup-visibility-checkbox#comment_904678 where it is suggested that you can prevent navigation to certain tabs using the SelectionChangedFcn? I suppose that you could do the same and then only allow navigation until that tab until is is ready.
T B
T B le 17 Mai 2021
thanks for your efforts. The problem was related to the units.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Develop uifigure-Based Apps dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by