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

StackOverflow https://stackoverflow.com//questions/9691742

Вопрос

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top