簡體   English   中英

Matlab GUI:是否需要傳遞hObject和句柄?

[英]Matlab GUI: Do I need to pass hObject AND handles?

我對在Matlab中編寫GUI相當陌生,並且注意到在回調之間傳遞信息時,通常會傳遞兩個值hObjecthandles

據我了解, hObject是包含真實數據(或至少是它的句柄)的對象的句柄,而handles本身並不是句柄,而是一種結構,該結構再現了hObject后面的對象的hObject 更改(或添加) handles不會更改實際數據,因為從調用函數可以看到,而是本地副本。 要將更改后的數據實際寫入hObject指向的對象中,我需要調用guidata(hObject, handles)

到目前為止是對的還是我做錯了嗎?

我還讀到我可以通過調用handles = guidata(hObject)來創建類似於handleshandles = guidata(hObject)

那么將hObjecthandles傳遞給我自己的函數之一,而不是僅僅傳遞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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM