Matlab GUI 菜单和工具栏常用操作.docx
Matlab GUI 菜单和工具栏常用操作Matlab GUI 常用操作 菜单 1. 编辑菜单 打开GUIDE,选择工具栏上面的菜单编辑按钮 2. 添加菜单回调函数 菜单编辑完成保存后,在fig对应的m文件中会自动生成菜单的回调函数声明 例如菜单tag名为menuFilePrint,则对应的callback函数为: function menuFilePrint_Callback(hObject, eventdata, handles) 可以在该函数内添加代码实现功能。 3. 菜单项访问 · 获取菜单句柄 在matlab的函数中要对某个菜单进行访问,必须获得该菜单的句柄。 如果是在菜单的回调函数里面,hObject就是该菜单的句柄; 1 如果是在其他的函数里面要获得某一菜单的句柄,比如选中工具栏上的ZoomIn按钮,按钮处于被按下状态,同时要设置对应菜单项view->Zoom-Zoom In 为选中状态,如下图: 这里要在按钮“ZoomIn”的callback函数里面实现对菜单menuViewZoomIn的状态设置。首先得获得菜单的句柄: % first we must get the handle of menuZoomIn hFigChildren = allchild(gcf); % menuView handle hMenuView = findobj(hFigChildren,'Tag','menuView'); hvc = allchild(hMenuView); % menuViewZoom hViewZoom = findobj(hvc,'Tag','menuViewZoom'); hvzc = allchild(hViewZoom); %menuZoomIn handle hZoomIn = findobj(hvzc,'Tag', 'menuZoomIn'); · 获取设置菜单状态 得到菜单的句柄后就可以得到菜单当前的状态了: if strcmp(get(hZoomIn, 'Checked'),'on') set(hZoomIn, 'Checked', 'off'); else set(hZoomIn, 'Checked', 'on'); end 2 工具栏 1. 不显示工具栏 1) GUIDE开发界面 在对应的m文件中找到 function Main_OpeningFcn(hObject, eventdata, handles, varargin) 在该函数里面添加: set(hObject,'Toolbar','none'); 2) M文件开发 hMainFigure = figure(. % The main GUI figure 'MenuBar','none', . 'Toolbar','none', . 'HandleVisibility','callback', . 'Color', get(0,. 'defaultuicontrolbackgroundcolor'); 2. 显示“Figure”工具栏 set(hObject,'Toolbar','figure'); 3. 添加自定义工具栏 set(hObject,'Toolbar','none'); hToolbar = uitoolbar(hObject); hNewPushtool = uipushtool(. % Open toolbar button 'Parent',hToolbar,. 'TooltipString','New File',. 'CData',imread('New.bmp'); 'HandleVisibility','callback', . 'ClickedCallback', hOpenMenuitemCallback); 4. 获取工具栏句柄 % get toolbar handle hToolbar = findall(gcf,'Type','uitoolbar'); if isempty(hToolbar), return, end 5. 获取figure工具栏按钮的tag值 % get toolbar handle hToolbar = findall(gcf,'Type','uitoolbar'); if isempty(hToolbar), return, end 3 % get all children hChildren = allchild(hToolbar); if isempty(hChildren), return,end hTags = get(hChildren, Tag); hTags保存了工具栏所有按钮的tag值: 6. 获取设置figure工具栏按钮的callback函数 %reset callback function for "Zoom in" hZoomIn = findobj(hChildren,'Tag','Exploration.ZoomIn'); set(hZoomIn,'ClickedCallback',tbZoomIn_Callback); function tbZoomIn_Callback(hObject, eventdata) % hObject handle to tbZoomIn (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB 7. 删除figure工具栏按钮 % set figure toolbar first set(hObject,'Toolbar','figure'); % get toolbar handle tbh = findall(hObject,'Type','uitoolbar'); if isempty(tbh), return, end % toolbar buttons collection hChildren = allchild(tbh); if isempty(hChildren), return, end % delete data cursor button hDeleted = findobj(hChildren,'Tag','Exploration.DataCursor'); delete(hDeleted); 4 8. 设置figure工具栏按钮的状态 % get toolbar handle hToolbar = findall(gcf,'Type','uitoolbar'); if isempty(hToolbar), return, end % get all children hChildren = allchild(hToolbar); if isempty(hChildren), return,end hTags = get(hChildren, 'Tag'); % find "Zoom In" button hb = findobj(hChildren,'Tag','Exploration.ZoomIn'); if isempty(hb),return, end % set state if strcmp(get(hObject, 'Checked'),'on') set(hObject, 'Checked', 'off'); set(hb,'State', 'off'); else set(hObject, 'Checked', 'on'); set(hb,'State', 'on'); end 5