guidata(hObject,handles);为什么我们真的需要它?

时间:2012-11-24 11:06:46

标签: matlab matlab-guide

最近我和Matlab GUI GUIDE一起工作了很多。

当我构建GUI时,每次写callback function时,我都必须在函数末尾添加这一行:guidata(hObject, handles);例如:

function someFunction_Callback(hObject, eventdata, handles)
.... %implementation
........
guidata(hObject, handles);  <------------

现在我想了解为什么每次我有一个与GUI相关的功能时我都会添加这一行。

幕后真的发生了什么?这个结构包含哪些信息?

1 个答案:

答案 0 :(得分:4)

使用guidata是在回调之间读取/存储用户数据的一种方法。我通常这样做

function reset_btn_tag_Callback(hObject, eventdata, handles)

data = get(handles.figure1, 'UserData');
data.state = -1; %change my data
% etc... 
set(handles.figure1, 'UserData',data);  %save it back before return

除非您之前使用myData=guidata(object_handle)阅读了您的数据,否则无需执行guidata(object_handle,myData)

再次,guidata只是一个API,您可以使用它来读取/写入数据回到数字内部,以便在回调之间存储。如果您不在回调中修改自己的数据,则无需使用它。我将所有数据都放在struct因为guidata仅用于一个变量。

因此,如果您未在示例中显示数据或句柄中的任何内容,则无需使用它。