3

我正在开发一个必须显示进度条的 MATLAB GUI。我的功能有两个问题waitbar

  1. 我想使进度条模态化,以便在显示进度条时用户不能在 GUI 上做任何其他事情。

  2. 栏的右上角有最小化按钮和关闭按钮(与任何其他窗口非常相似)。如果按下关闭按钮,进度条会关闭,我希望隐藏或禁用此按钮,以便用户无法关闭进度条。

我该如何实现这些行为?

4

2 回答 2

5

例子:

plot(sin(1:100))
h = waitbar(0, 'Please wait...');
set(h, 'WindowStyle','modal', 'CloseRequestFcn','');
for i=1:10
    waitbar(i/10, h);
    pause(.5)
end
delete(h)

截屏

通过设置CloseRequestFcn为空字符串,单击关闭按钮不会执行任何操作。您只需要等待循环完成即可。

请注意,您仍然可以点击Ctrl+c杀死正在运行的计算(我认为这是一件好事,毕竟您不想惹恼用户!)

于 2012-07-20T14:20:25.810 回答
0

对于数字 1,您应该研究 Matlab 中的线程。您可能需要并行计算工具箱才能访问必要的功能。你可以在这里找到更多

就2号而言。您应该能够覆盖 GUI 代码中的 close 函数。

这将是这样的:

function MyWaitBar_CloseRequestFcn(hObject, eventdata, handles)

delete(hObject); % This of course deletes the object and we don't want this.  

因此,您只需将函数留空。但不要忘记在某个时候关闭它!

于 2012-07-20T00:42:58.160 回答