2012-03-13 57 views
1

我有一個MATLAB GUI,它有不同的功能,每個都有自己的uicontrols面板。當一個面板被選中時,另一個面板被設置爲不可見,反之亦然。但是,它們以彈出菜單的形式共享一些相同的輸入。我能否以某種方式在第二個面板上包含菜單的「克隆」實例?我想避免儘可能多的多餘回調和uicontrols。兩個面板可以在MATLAB GUI中共享一個uicontrol嗎?

回答

2

我想如果uicontrol是這個數字的直接子,你可能會把它放在一切的前面。

更簡單的解決方案是對多個uicontrol使用相同的回調。在屬性編輯器中,您可以修改回調名稱並將其設置爲通用回調函數。此外,您可以在GUI的OpeningFcn中創建一個字段(例如myPopupH),在該字段中存儲應該以相同方式操作的彈出窗口句柄。然後,在回調中,您將使用hObject(即第一個輸入參數)調用所有get調用(以訪問彈出式菜單的修改狀態),但在所有set調用中使用handles.myPopupH,因此您可以確保兩個彈出窗口始終具有相同的狀態。因此,ui對象可能是多餘的,但是所有的代碼(更關鍵的)只存在於一個副本中。

對於多個UI元素,我經常使用單個回調的地方是關閉請求函數,它可以從「Cancel」按鈕以及從關閉該圖的「X」進行訪問,也可能從關閉請求函數「文件」菜單項。

相關問題