2

最近、私はとたくさん仕事をしていMatlab GUI GUIDEます。

GUIを作成するとき、を書くたびにcallback function、関数の最後に次の行を追加する必要があります。guidata(hObject, handles);例:

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

ここで、GUIに関連する関数があるたびに、なぜこの行を追加するのかを理解したいと思います。

舞台裏で実際に何が起こっているのでしょうか?この構造体はどのような情報を保持していますか?

4

1 に答える 1

4

guidataの使用は、コールバック間でユーザーデータを読み取り/保存する1つの方法です。私は通常これを行います

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これは、コールバックの間に格納されるFigureの内部にデータを読み書きするために使用するための単なるAPIです。コールバックで独自のデータを変更しない場合は、それを使用する必要はありません。1つの変数に対してのみ機能するため、すべてのデータを配置しstructます。guidata

したがって、例で示したようにデータまたはハンドルで何も変更しない場合は、それを使用する必要はありません。

于 2012-11-24T12:07:04.173 に答える