MATLAB Answers

xi
0

How to add uibuttongroup to a toolbar

xi
さんによって質問されました 2019 年 10 月 7 日
最新アクティビティ xi
さんによって コメントされました 2019 年 10 月 10 日
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 件のコメント

サインイン to comment.

1 件の回答

回答者: Chidvi Modala 2019 年 10 月 10 日
 採用された回答

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 件のコメント

xi
2019 年 10 月 10 日
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!

サインイン to comment.



Translated by