如何设置Matlab waitbar大小?

时间:2016-04-16 19:15:08

标签: matlab

这些是基本问题,但我无法在matlab文档或google中找到解决方案。

  • 我的等候栏有取消按钮两行文字,但文字不适合等候栏。我只需要一些自动调整或增加等候栏高度。

  • 为什么我无法点击等待栏点击“x”?我可以关闭它的唯一方法是输入delete(h)。只有在我添加了取消按钮后才会发生这种情况。

创建Waitbar:

h = waitbar(0,'Please wait...','CreateCancelBtn',...
    'setappdata(gcbf,''canceling'',1)',...
    'Position',[100 100 200 200]); % Position' does not work

循环内部:

    str = sprintf('Noise: %.2f (%d/%d). Planes: %.2f (%d/%d).\nOveral: %.1f%%',...
    noiseAmp,noiseId,noiseCount,slice,sliceId,sliceCount,100*perc);
    waitbar(perc,h, str);

1 个答案:

答案 0 :(得分:1)

您无法使用取消按钮删除waitbar,因为您设置了CreateCancelBtn回调,该回调会覆盖典型行为,并且您的回调内部不删除它以便它保持不变。

您可以更新回调以设置应用程序数据将其删除。

h = waitbar(0,'Please wait...','CreateCancelBtn',...
              'setappdata(gcbf,''canceling'',1); delete(gcbf);')

就改变位置而言,它似乎不适用于您的构造函数,但您可以在创建waitbar后更改它。

set(h, 'Position', [100 100 200 200])

请注意,此不会更改waitbar的所有内容的位置。这是因为MATLAB选择假设waitbar的大小永远不会改变,因此他们使用Pixel单位来定义所有组件的位置。

虽然有一点技巧可以完成这项工作。您希望首先(在调整大小之前)将Units的所有组件的waitbar更改为Normalized。然后,当您调整大小时,所有组件都将被适当移动。

h = waitbar(0, 'Please Wait', 'CreateCancelBtn', 'disp(h)');
set(findall(h), 'Units', 'Normalized')
set(h, 'Units', 'Pixels', 'Position', [100 100 200 200])