Могут ли две панели совместно использовать uicontrol в графическом интерфейсе MATLAB?
-
13-12-2019 - |
Вопрос
У меня есть графический интерфейс MATLAB, который имеет различные аспекты функциональности, каждый со своей собственной панелью uicontrols.Когда выбрана одна панель, другая становится невидимой, и наоборот.Однако они используют одни и те же входные данные в виде всплывающего меню.Могу ли я каким-то образом включить экземпляр меню "clone" на второй панели?Я бы хотел избежать как можно большего количества избыточных обратных вызовов и uicontrols.
Решение
Я думаю, если бы uicontrol был прямым дочерним элементом рисунка, вы могли бы поставить его перед всем остальным.
Гораздо более простым решением является использование одного и того же обратного вызова для нескольких uicontrols.В редакторе свойств вы можете изменить имя обратного вызова и присвоить ему значение обычной функции обратного вызова.Кроме того, вы можете создать поле (например, myPopupH
) в OpeningFcn
графического интерфейса, в котором вы храните дескрипторы всплывающих окон, которые должны вести себя точно так же.Затем, при обратном вызове, вы бы использовали hObject
, т. е.первый входной аргумент для всех get
вызовы (для доступа к измененному состоянию всплывающего меню), но вы бы использовали handles.myPopupH
во всех set
вызовы, чтобы вы могли гарантировать, что оба всплывающих окна всегда имеют одинаковое состояние.Таким образом, ui-объект может быть избыточным, но весь код (что гораздо более важно) существует только в одном экземпляре.
Единственное место, где я обычно использую один обратный вызов для нескольких элементов пользовательского интерфейса, - это функция запроса закрытия, доступ к которой осуществляется с помощью кнопки "Отмена", а также с помощью символа "X", который закрывает рисунок, и, возможно, из одного из пунктов меню "Файл".