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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top