2011-05-15 40 views
3

我正在嘗試使用uitabpanel()http://www.mathworks.com/matlabcentral/fileexchange/11546上找到幾個選項卡。我想根據當前打開的選項卡調整GUI大小;這是與uitabpanel.SelectedItemMATLAB:對變量進行回調?

基本上我想建立一個回調爲了監視uitabpanel.SelectedItem - 當這個變量改變時,GUI窗口應該適當調整大小。一般來說,我正在尋找一種方法來監視變量並在變量值發生變化時執行回調。

這可能嗎?我會如何去做這件事?

謝謝!

回答

4

我現在沒有一個MATLAB在我面前,但是如果它是作爲一個屬性實現的 - 而且就我所能從快速查看代碼而言,它是 - 您可以使用addlistener函數併爲其提供回調函數。

addlistener(hTab,'SelectedItem','PostSet',@(s,e)disp('SelectedItem changed')) 
+0

總是在學習新東西。謝謝! – Jonas 2011-05-15 12:14:26

+0

這完全是我需要的!事實證明'SelectedItem'不是一個屬性,但底層的標籤面板只是'uipanel'對象,我可以通過觀看每個標籤的'Visible'屬性來使用你的建議。謝謝!!! – 2011-05-16 03:59:47

3

我不熟悉文件交換中的uitab。但是,如果它建立在內置的uitab上,那麼應該有一個selectionChangeCallbackselectionChangeFcn屬性(取決於您的Matlab版本)。爲此回調屬性指定一個函數,並且您可以在選擇更改時執行函數。

如果這是不可能的,那麼監視變量變化的唯一方法就是使用TIMER OBJECT定期輪詢變量的值(如果無法以某種方式使用對象並設置方法)。

編輯由於FEX uitab基於uipanel,你要尋找的回調是最有可能ButtonDownFcn。在更改之前,請確保它不被uitab函數使用,否則,您將需要編輯該函數。

+0

我絕對可以使用OOP做這件事,但我覺得它有點像噴砂湯餅乾 - 對於我認爲應該是一項相當簡單的任務來說,這已經過時了。我想這不像我想的那麼簡單。 我不認爲uitabpanel()是基於uitab(),但我一定會嘗試你說的回調。我不認爲前者是以後者爲基礎​​的。非常感謝! – 2011-05-15 01:52:27

+0

看起來像uitabpanel()基於uipanel()。我想我可以切換到uitab(),但坦率地說uitabpanel()看起來更漂亮.. – 2011-05-15 01:54:42

+0

@ strictrude27:啊,好吧,您可能想看看ButtonDownFcn,然後每次點擊uipanel。 – Jonas 2011-05-15 04:37:33