Могут ли две панели совместно использовать uicontrol в графическом интерфейсе MATLAB? - PullRequest
1 голос
/ 14 марта 2012

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

1 Ответ

2 голосов
/ 14 марта 2012

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

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

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

...