[英]Matlab GUI: Do I need to pass hObject AND handles?
我對在Matlab中編寫GUI相當陌生,並且注意到在回調之間傳遞信息時,通常會傳遞兩個值hObject
和handles
。
據我了解, hObject
是包含真實數據(或至少是它的句柄)的對象的句柄,而handles
本身並不是句柄,而是一種結構,該結構再現了hObject
后面的對象的hObject
。 更改(或添加) handles
不會更改實際數據,因為從調用函數可以看到,而是本地副本。 要將更改后的數據實際寫入hObject
指向的對象中,我需要調用guidata(hObject, handles)
。
到目前為止是對的還是我做錯了嗎?
我還讀到我可以通過調用handles = guidata(hObject)
來創建類似於handles
的handles = guidata(hObject)
。
那么將hObject
和handles
傳遞給我自己的函數之一,而不是僅僅傳遞hObject
並在本地創建handles
,有什么意義嗎?
到目前為止您是正確的。 輸入參數handles
是跟蹤UI的所有組件的便捷方法。 作為標准handles
,不是輸入參數。 但是,如果您使用guide
,它將通過設置例如匿名函數@(hObject,eventdata)guitest('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
的Callback
選項來作為一個額外參數。 當然,可以通過handles = guidata(hObject)
在函數的代碼中輕松完成此操作。
通常,您不需要更改handles
(僅需要更改它們所引用的對象),但是如果您需要更改handles
某些內容(例如,如果使用它存儲的不僅僅是UI元素的handles
),調用guidata(hObject, handles)
以實際保存更改很重要。
因此,對您的問題的簡短回答是:不,您可以在需要時自己找回handles
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.