在MATLAB中是否有触发任何其他回调的回调?

时间:2013-10-22 05:11:46

标签: matlab callback undo

我想在我制作的GUI中创建一个类似“撤消”的功能。我的想法是创建一个对象的副本,每当设置发生更改时,该对象都会存储GUI的所有设置。要做到这一点,如果有一个“主”回调,只要用户触发任何其他GUI回调就会触发,这将是很方便的。这样的回调是否存在?谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道您所描述的回调,但如果您将设置存储在结构数组中,则可以返回之前的设置。

以下是我的建议:

1)使用以下命令将gui设置存储在结构中:

gui_settings.button1=1;

gui_settings.button2 = 0;

2)将gui设置结构存储在gui figure的UserData中

set(gcf, 'UserData', gui_settings) 3)为读取所有gui设置的“StoreGuiSettings”创建一个回调,然后将它们存储回UserData,命令看起来像这样:

gui_settings = get(gcf, 'UserData');

gui_settings(end+1) = gui_settings(end); %copy the last group of settings

gui_settings(end).button1 = get(h_button1, 'value'); % read button 1's setting

% read all the other settings ...

set(gcf, 'UserData', gui_settings) % Store the settings in UserData

4)修改你的其他回调以在某个时刻调用“StoreGuiSettings”回调来启用撤消

5)创建一个“撤销”回调,从UserData检索gui设置,删除结构数组gui_settings(end) = [];中的最后一个元素,并将gui_settings存储回UserData。

如果您不想选择“重做”选项,则删除最后一个设置即可。如果你想“重做”,那么你必须保持一个指向gui_settings结构数组中哪个元素是当前元素的指针,然后在用户想要“重做”或“撤消”时更改指针。