Können zwei Panels ein uicontrol in einer MATLAB-GUI teilen?
-
13-12-2019 - |
Frage
Ich habe eine MATLAB-GUI mit unterschiedlichen Funktionsaspekten, jeweils mit einem eigenen Bedienfeld an UIControls.Wenn ein Panel ausgewählt ist, wird das andere auf unsichtbar gesetzt und umgekehrt.Sie nutzen jedoch einige der gleichen Eingaben in Form eines Popup-Menüs.Kann ich irgendwie eine „Klon“-Instanz des Menüs in das zweite Bedienfeld einfügen?Ich möchte so viele redundante Rückrufe und Uicontrols wie möglich vermeiden.
Lösung
Ich denke, wenn die uicontrol ein direktes Kind der Figur wäre, könnten Sie sie vielleicht vor alles setzen.
Eine viel einfachere Lösung besteht darin, denselben Callback für mehrere uicontrols zu verwenden.Im Eigenschafteneditor können Sie den Callback-Namen ändern und ihn auf eine allgemeine Callback-Funktion festlegen.Zusätzlich können Sie ein Feld erstellen (z.B. myPopupH
) im OpeningFcn
der GUI, in der Sie die Handles der Popups speichern, die sich genauso verhalten sollen.Dann würden Sie im Rückruf verwenden hObject
, d.h.das erste Eingabeargument für alle get
Aufrufe (um auf den geänderten Status des Popup-Menüs zuzugreifen), aber Sie würden verwenden handles.myPopupH
in allen set
Aufrufe, sodass Sie sicherstellen können, dass beide Popups immer den gleichen Status haben.Daher ist das UI-Objekt möglicherweise redundant, aber der gesamte Code (was viel kritischer ist) existiert nur in einer einzigen Kopie.
Eine Stelle, an der ich routinemäßig einen einzelnen Rückruf für mehrere UI-Elemente verwende, ist die Schließanforderungsfunktion, auf die über die Schaltfläche „Abbrechen“ sowie über das „X“, das die Abbildung schließt, und möglicherweise über eine der „Datei“-Schaltflächen zugegriffen werden kann. -Menüpunkte.