¿Pueden dos paneles compartir un uicontrol en una GUI de MATLAB?
-
13-12-2019 - |
Pregunta
Tengo una GUI de MATLAB que tiene diferentes aspectos de funcionalidad, cada uno con su propio panel de controles de interfaz de usuario.Cuando se selecciona un panel, el otro se configura como invisible y viceversa.Sin embargo, comparten algunas de las mismas entradas en forma de menú emergente.¿Puedo incluir de alguna manera una instancia 'clon' del menú en el segundo panel?Me gustaría evitar tantas devoluciones de llamadas y controles de interfaz de usuario redundantes como sea posible.
Solución
Supongo que si el uicontrol fuera un hijo directo de la figura, es posible que puedas ponerlo delante de todo.
Una solución mucho más sencilla es utilizar la misma devolución de llamada para múltiples controles de interfaz de usuario.En el editor de propiedades, puede modificar el nombre de la devolución de llamada y configurarlo en una función de devolución de llamada común.Además, puede crear un campo (p. ej. myPopupH
) en el OpeningFcn
de la GUI, en la que almacena los identificadores de las ventanas emergentes que deberían comportarse de la misma manera.Luego, en la devolución de llamada, usarías hObject
, es decir.el primer argumento de entrada, para todos los get
llamadas (para acceder al estado modificado del menú emergente), pero usarías handles.myPopupH
en todos los set
llamadas, para que pueda asegurarse de que ambas ventanas emergentes siempre tengan el mismo estado.Por lo tanto, el objeto ui puede ser redundante, pero todo el código (que es mucho más crítico) sólo existe en una única copia.
Un lugar donde habitualmente uso una única devolución de llamada para múltiples elementos de la interfaz de usuario es la función de solicitud de cierre a la que se accede desde el botón "Cancelar", así como desde la "X" que cierra la figura, y posiblemente desde uno de los "Archivos". -elementos de menú.