MATLAB Answers

How to add uibuttongroup to a toolbar

2 views (last 30 days)
xi
xi on 7 Oct 2019
Commented: xi on 10 Oct 2019
I want to add 3 toggle buttons to the toolbar. They are exclusive, i.e., only one of them should be pressed.
It is easy to create these buttons on a figure by using uibuttongroup, which takes care of the desired behavior. Is it possible to add them to the toolbar?

  0 Comments

Sign in to comment.

Accepted Answer

Chidvi Modala
Chidvi Modala on 10 Oct 2019
Hello Xi,
From my understanding, you want to add 3 toggle buttons to the toolbar and you want only one toggle button being active at the same time.
You can make use of 'uitoggletool' to create a toggle button on toolbar and create appropriate callbacks for toggle action to set the state of other toggle buttons
For example
function createToggleButtons
f = figure('ToolBar','none');
tb = uitoolbar(f);
img = zeros(16,16,3);
% Create 2 toolbar items (set one among them to have ‘on’ State)
tb1 =uitoggletool(tb,'CData',img,'TooltipString','ToggleButton1','State','on');
tb2=uitoggletool(tb,'CData',img,'TooltipString','ToggleButton2');
% Set the callback for each toggle passing itself and the other toggle
% to the callback
set(tb1,'ClickedCallback',@(obj,event)ToggleToolbar(obj,tb2));
set(tb2,'ClickedCallback',@(obj,event)ToggleToolbar(obj,tb1));
end
function ToggleToolbar ( primary, secondary )
% Switch the other toolbar state based on the value of the
% toolbar which the user clicked on.
switch get ( primary, 'State' )
case 'on'
set ( secondary, 'State', 'off' );
case 'off'
set ( secondary, 'State', 'on' );
end
end

  1 Comment

xi
xi on 10 Oct 2019
Although I'm seeking solutions by taking advantages of the "uibuttongroup", your solution is simpler than what I thought, especially the idea of using one shared callbackfunction.
If I have more than two toggle buttons, I can simply use "findobj" to set the states of all togglebuttons 'off' and turn on the current one.
Thx!

Sign in to comment.

More Answers (0)

Sign in to answer this question.