MatlabGUI:我需要传递hObject和句柄吗?
我对在Matlab中编写gui相当陌生,并注意到在回调之间传递信息时,通常会传递两个值MatlabGUI:我需要传递hObject和句柄吗?,matlab,handle,matlab-guide,Matlab,Handle,Matlab Guide,我对在Matlab中编写gui相当陌生,并注意到在回调之间传递信息时,通常会传递两个值hObject和handles 据我阅读和理解,hObject是包含真实数据的对象的句柄(或至少是句柄),而handles本身不是句柄,而是一个在hObject后面重现对象结构的结构。更改(或添加到)句柄不会更改从调用函数中看到的真实数据,而是更改本地副本。要将更改后的数据写入hObject所指向的对象,我需要调用guidata(hObject,handles) 到目前为止这是对的还是我做错了什么 我还了解到,
hObject
和handles
据我阅读和理解,hObject
是包含真实数据的对象的句柄(或至少是句柄),而handles
本身不是句柄,而是一个在hObject
后面重现对象结构的结构。更改(或添加到)句柄
不会更改从调用函数中看到的真实数据,而是更改本地副本。要将更改后的数据写入hObject
所指向的对象,我需要调用guidata(hObject,handles)
到目前为止这是对的还是我做错了什么
我还了解到,通过调用handles=guidata(hObject)
,我可以创建类似于handles
的结构
那么,将
hObject
和handles
传递给我自己的一个函数,而不是仅仅传递hObject
并在本地创建句柄,有什么意义吗?
到目前为止,你是正确的。输入参数handles
是跟踪UI所有组件的便捷方法。作为标准,句柄
不是输入参数。但是如果您使用guide
,它将设置为一个额外参数,如下所示,例如,通过设置匿名函数@(hObject,eventdata)guitest('pushbutton1_Callback',hObject,eventdata,guidata(hObject))的Callback
选项。
当然,这可以通过handles=guidata(hObject)
在函数的代码中轻松实现
通常您不需要更改句柄
(仅在它们引用的对象中),但是如果您需要更改句柄
中的某些内容(例如,如果您使用它存储的不仅仅是UI元素的句柄
),则调用guidata(hObject,handles)非常重要
以实际保存更改
因此,对您的问题的简短回答是:不,您也可以在需要时自己检索句柄