我試圖通過編程的方式在MATLAB中創建一個點擊事件,它將模仿用戶點擊一個GUI對象。該對象的回調函數是一個子函數,所以我不能直接調用它。但是,我能夠得到的對象,這最終是一個3×1單元陣列包含以下內容的回調性質:如何模仿用戶點擊以調用GUI對象的回調函數?
@uiBlockFn/callback_til [ 188.0011] [1x1 struct]
我如何可以調用這個回調函數代碼這樣它模仿了用戶點擊GUI對象時會發生什麼?
我試圖通過編程的方式在MATLAB中創建一個點擊事件,它將模仿用戶點擊一個GUI對象。該對象的回調函數是一個子函數,所以我不能直接調用它。但是,我能夠得到的對象,這最終是一個3×1單元陣列包含以下內容的回調性質:如何模仿用戶點擊以調用GUI對象的回調函數?
@uiBlockFn/callback_til [ 188.0011] [1x1 struct]
我如何可以調用這個回調函數代碼這樣它模仿了用戶點擊GUI對象時會發生什麼?
比方說,你有一個圖形與手柄hObject
對象,你有一個像這樣的對象回調:
callbackCell = get(hObject,'Callback');
正如你提到的,單元陣列callbackCell
你得到最終是一個3元單元陣列在第一個單元中具有function handle,而在其他兩個單元中具有其他數據。當callback for an object is defined as a cell array(就像你的情況一樣),回調函數句柄(或字符串名稱)存儲在第一個單元格中,並且希望傳遞給回調函數的附加輸入參數位於其餘單元格中。
但是,當該對象被激活時調用該回調函數時,實際上會在輸入參數列表的開始處自動插入2個附加參數。它們是:
hObject
:現在正在調用其回調的對象的句柄。eventData
:與用戶激活事件相關的數據結構,通常只是空矩陣[]
(a few cases除外)。所以,如果你想模仿對象的動作被用戶激活時,你會想調用回調函數如下(假設無需事件數據):
callbackCell{1}(hObject,[],callbackCell{2:end});
非常好,它完美的作品。謝謝! – Anny 2011-04-27 04:47:51
這是內置hgfeval功能是爲了什麼: http://undocumentedmatlab.com/blog/hgfeval/
而不是使用一個子功能的回調,你可以把它變成一個私有/功能,你可以從打電話另一個文件? – Alex 2011-04-27 01:41:30
這將是最方便的,但我不能。作者只給了我作爲p代碼而不是m代碼的功能。從我的理解來看,這個函數依賴於其他幾個子函數。 – Anny 2011-04-27 02:15:39
你有什麼形式的回調?你有一個函數句柄或回調的字符串名稱?你能從GUI對象本身獲得回調函數嗎? – gnovice 2011-04-27 03:44:23