我有一个 MATLAB GUI,它具有不同方面的功能,每个都有自己的 uicontrol 面板。选择一个面板时,另一个面板设置为不可见,反之亦然。但是,它们以弹出菜单的形式共享一些相同的输入。我可以以某种方式在第二个面板上包含菜单的“克隆”实例吗?我想避免尽可能多的冗余回调和 uicontrols。
问问题
698 次
1 回答
2
我想如果 uicontrol 是图形的直接子对象,您也许可以将它放在所有内容的前面。
一个更简单的解决方案是对多个 uicontrol 使用相同的回调。在属性编辑器中,您可以修改回调名称并将其设置为常用的回调函数。此外,您可以在 GUI 中创建一个字段(例如myPopupH
)OpeningFcn
,在其中存储应该以相同方式运行的弹出窗口的句柄。然后,在回调中,您将使用hObject
,即第一个输入参数,用于所有get
调用(以访问弹出菜单的修改状态),但您将handles.myPopupH
在所有set
调用中使用,以便您可以确保两个弹出窗口始终具有相同的状态。因此,ui 对象可能是多余的,但所有代码(更关键)只存在于一个副本中。
我经常为多个 ui 元素使用单个回调的一个地方是关闭请求函数,该函数可从“取消”按钮以及关闭图形的“X”以及可能从“文件”之一访问- 菜单项。
于 2012-03-13T23:07:49.220 回答