2012-03-13 1 views
1

У меня есть графический интерфейс MATLAB, который имеет различные аспекты функциональности, каждый со своей собственной панелью uicontrols. Когда выбрана одна панель, другая устанавливается в невидимую, и наоборот. Однако они используют одни и те же входные данные в виде всплывающего меню. Можно ли каким-то образом включить экземпляр «clone» в меню на второй панели? Я хотел бы избежать как можно большего количества избыточных обратных вызовов и uicontrols.Может ли две панели совместно использовать uicontrol в графическом интерфейсе MATLAB?

ответ

2

Я думаю, если бы uicontrol был прямым ребенком фигуры, вы можете поставить его перед всем.

Проще простого решения использовать один и тот же обратный вызов для нескольких uicontrols. В редакторе свойств вы можете изменить имя обратного вызова и установить его в общую функцию обратного вызова. Кроме того, вы можете создать поле (например, myPopupH) в графическом интерфейсе OpeningFcn, в котором вы храните ручки всплывающих окон, которые должны вести себя одинаково. Затем в обратном вызове вы должны использовать hObject, то есть первый входной аргумент, для всех вызовов get (для доступа к измененному состоянию всплывающего меню), но вы должны использовать handles.myPopupH во всех вызовах set, чтобы вы можете убедиться, что оба всплывающих окна всегда имеют одно и то же состояние. Таким образом, ui-объект может быть избыточным, но весь код (который гораздо более критичен) существует только в одной копии.

Одно место, где я обычно использую один обратный вызов для нескольких элементов ui, является функцией запроса закрытия, доступ к которой осуществляется из кнопки «Отмена», а также от «X», которая закрывает фигуру, и, возможно, из одной из «Файл» -меню.

Смежные вопросы