这些是基本问题,但我无法在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);
答案 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])