我想在自己创建的GUI中添加“撤销”功能。我的想法是,每当更改设置时,创建一个对象的副本,该副本存储GUI的所有设置。为此,如果存在一个“主”回调函数,该函数可以在用户触发任何其他GUI回调函数时触发,那么将非常方便。是否存在这样的回调函数?谢谢!
我想在自己创建的GUI中添加“撤销”功能。我的想法是,每当更改设置时,创建一个对象的副本,该副本存储GUI的所有设置。为此,如果存在一个“主”回调函数,该函数可以在用户触发任何其他GUI回调函数时触发,那么将非常方便。是否存在这样的回调函数?谢谢!
我不清楚是否有像你描述的回调函数,但如果你将设置存储在结构数组中,就可以返回到之前的设置。
这是我的建议:
1)使用以下命令将GUI设置存储在结构体中:
gui_settings.button1=1;
gui_settings.button2 = 0;
2)将GUI设置结构存储在GUI图形的UserData中
set(gcf,'UserData',gui_settings)
3)为“StoreGuiSettings”创建回调函数,该函数将读取所有GUI设置,然后将它们存储回UserData中,命令看起来像这样:
gui_settings = get(gcf,'UserData');
gui_settings(end+1) = gui_settings(end);%复制最后一组设置
gui_settings(end).button1 = get(h_button1,'value');%读取按钮1的设置
%读取所有其他设置...
set(gcf,'UserData',gui_settings)%将设置存储在UserData中
4)修改其他回调函数,在某个时刻调用“StoreGuiSettings”回调函数以启用撤消
5)创建一个“撤消”回调函数,该函数从UserData中检索GUI设置,删除结构数组中的最后一个元素gui_settings(end) = [];
,并将gui_settings重新存储在UserData中。