Domanda

Ho una GUI Matlab che ha diversi aspetti della funzionalità, ognuno con il proprio pannello di uicontrols.Quando è selezionato un pannello, l'altro è impostato su invisibile e viceversa.Tuttavia, condividono alcuni degli stessi ingressi sotto forma di un menu popup.Posso includere un'istanza "clone" del menu sul secondo pannello in qualche modo?Mi piacerebbe evitare il maggior numero possibile di callback ridondanti e uicontroli.

È stato utile?

Soluzione

Immagino se l'uicontrol fosse un figlio diretto della figura, potresti essere in grado di metterlo davanti a tutto.

Una soluzione molto più semplice è utilizzare la stessa callback per più uicontrols. Nell'editor delle proprietà, è possibile modificare il nome del callback e impostarlo su una funzione di callback comune. Inoltre, è possibile creare un campo (ad esempio myPopupH) nel OpeningFcn della GUI, in cui si memorizzano le maniglie dei popup che devono comportarsi allo stesso modo. Quindi, nel callback, useresti hObject, ovvero il primo argomento di input, per tutte le chiamate get (per accedere allo stato modificato del menu popup), ma useresti handles.myPopupH in tutte le chiamate set, in modo che È possibile assicurarsi che entrambi i popup abbiano sempre lo stesso stato. Pertanto, l'oggetto UI può essere ridondante, ma tutto il codice (che è molto più critico) esiste solo in una singola copia.

Un luogo in cui utilizzo regolarmente una singola richiamata per più elementi UI è la funzione di richiesta a cui è possibile accedere dal punto di riferimento "Annulla" e dal "X" che chiude la figura, e possibilmente da uno dei "File" Articoli -Menu.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top