Matlab GUI动态离散状态跟踪器

时间:2016-10-26 01:05:43

标签: matlab user-interface progress-bar

在Matlab GUI中,我想动态显示一系列等距的框(包含在一个面板中)并动态突出显示一个特定的框。一种状态跟踪器(我的道歉,我不知道这个的技术术语)。显然,尺寸和间距应相对于容纳板。该GUI跟踪器将嵌入在包含的父图中。顺便说一句,他们不一定是正方形。单选按钮或只是普通的旧按钮可以正常工作。这可能吗 ?如果是这样,是否也可以在任何这些盒子上获得点击索引?据我所知,这可能是Matlab GUI的过多要求。提前谢谢。

Progress Tracker

EDIT1:这是我到目前为止所做的:

pnl = handles.trackerPanel;
pnlPose = get(pnl, 'Position');
pnlX = pnlPose(1); 
pnlY = pnlPose(2); 
pnlW = pnlPose(3); 
pnlH = pnlPose(4);

panelSidePad = 0.01*pnlW;
% Continuous box space
boxcontW = (pnlW - 2*panelSidePad)/N;

% Visible box: part of the continuous box space
boxW = boxcontW*0.9;
% Same thing on height
panelTopPad = pnlH*0.01;
boxH = pnlH - 2*panelTopPad;

% Indeces along the X-dimension
boxXIdc = pnlX+panelSidePad:boxcontW:pnlX+panelSidePad + boxcontW*(N-1);
boxYIdc = pnlY + panelSidePad;
trackerObjects = [];
for ii = 1:length(boxXIdc)
    objpos = [boxXIdc(ii), boxYIdc, boxW, boxH]; 
    tObj =  uicontrol('Parent', pnl,'Style','frame',...
                    'String','', 'Tag', sprintf('t_%d', ii), ...
                    'BackgroundColor', 'red',...
                    'Units','normalized','Position',objpos);
     % Register callback function. Use the same function to catch all click
     % events.
     set(tObj, 'Callback', @tracker_Callback);
     trackerObjects = [trackerObjects; tObj];
     % For a dramatic loading effect.
    drawnow();
end

if(length(boxXIdc) ~= N)
   warning('Not all trackers were displayed'); 
end
handles.trackerObjects = trackerObjects;

但问题是框架/文本等对象不响应点击事件。我必须添加按钮。另一侧的按钮边缘较厚,当物体太多时,颜色会消失。那么,有没有人知道1)是否为帧/文本添加工作回调或2)使按钮显示没有“弹出”边缘并使它们看起来平坦和四四方方。我没有在属性检查器中看到任何按钮对象的任何此类属性。

编辑2:要获得对框架的点击,而不是使用“回调”,请使用“ButtonDownFcn”作为click-callback函数属性,如下所示:

set(tObj, 'ButtonDownFcn', @tracker_Callback);

现在将在鼠标点击时调用回调。

0 个答案:

没有答案