WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Handles in programmierter GUI übergeben

 

stealth_mx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 94
Anmeldedatum: 15.06.13
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 23.01.2015, 12:54     Titel: Handles in programmierter GUI übergeben
  Antworten mit Zitat      
Hallo zusammen,

ich schreibe gerade ein GUI und bekomme es nicht hin, das Handles richtig zurückzugeben.

Ich habe ein Hauptgui (zum ersten mal selbst programmiert sonst immer GUIDE benutzt) in dieser gebe ich eine Menge Slider aus. Ich möchte jetzt die Slider filtern. Dh. ich gehe oben ins Menu dort auf Settings und es öffnet sich sich ein neues Fenster dort habe ich Checkboxen. Ich suche mir also aus welche Slider ich angezeigt bekommen will, drücke auf OK, das Fenster schließt sich und auf dem Hauptgui werden nur noch die angezeigt die ich auch haben möchte. Also nichts besonderes.

Deklaration des Menueintrags
Code:

% Im Vorfeld erstelltes Handles Struct. figObj ist der Name des Hauptgui Fensters (figObj = figure(...))
h = guihandles(figObj);

figMenuSettings = uimenu(figSettings,'label','Thresholds','Callback',...
    {@MenuThresholds_Callback,h});
 

Ist es richtig, dass ich an diesen Callback das handles übergeben muss? Ich benutze in der Funktion guidata somit bekomme ich das Handles Struct. Also müsste ich es meiner Meinung nach nicht tun. Die Frage ist was genau das src bzw das hObject ist und woher es kommt.

Die Callback Funktion

Code:

function MenuThresholds_Callback(src,eventdata,h)
    % Die Zeile holt mir doch das handles aus dem src.
    h = guidata(src);

    % Das neue Fenster in dem ich den Filter setze. Ich übergebe das Handles und erwarte es auch zurück
    h = NewConfigurationSet_Thresholds(h);
    % Methode zum platzieren der Slider (Die funktioniert auch gut)
    UpdateThresholds(src,h);

    % Abschliedend noch das handles speichern. Auch hier was ist mit src gemeint
    guidata(src,h);
 



Jetzt das eigentliche Problem mit dem neuen Fenster.


Code:

function h =  NewConfigurationSet_Thresholds(h)
f = figure(...);

% Hier der Zugriff auf das Handles aus der Hauptgui
localList = fieldnames(h.ThresholdsList);

for i=1:size(localList,1)
 % Hier gebe ich alle Elemente mit einer Checkbox aus
end

% Auch hier muss das h meiner Meinung nach nicht übergeben werden, wenn ich verstanden habe wie ich das src richtig nutzen kann
pushOK = uicontrol('style','pushbutton','string','OK','position',[120,10,120,30],'Callback',{@buttonOK_Callback,h});

% Was könnte ich anstatt von gcf schreiben? Ich meine gcf ist die akuelle Figure aber wie könnte ich es sonst ausdrücken? (Hier gehts mir um das Verständnis)
uiwait(gcf);


function h = buttonOK_Callback(src,eventdata,h)
localList = fieldnames(h.ThresholdsList);
for i=1:size(localList,1)
   % Hier schreibe ich in das Handles
   % h.ThresholdsList.(...).Enabled = ...
end

% Hier muss ich jetzt vor der uiresume irgendwie h speichern.
% Ich habe src benutzt, was aber falsch ist, weil ich es nicht ganz verstanden habe
guidata(src,h)
uiresume(gcf);
close(gcf);
 


Das handles wird nämlich nicht gespeichert.

Sind jetzt ein paar Fragen, die mir die Arbeit deutlich erleichern könnten.

Grüße

stealth


edit:
ich habe jetzt verstanden das src das Object ist, welches die Methode aufruft. Aber wie kann ich h = guidata(src) benutzten, wenn src meiner Meinung nach nichts mit dem eigentlichen handles zu tun hat?!
Private Nachricht senden Benutzer-Profile anzeigen


stealth_mx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 94
Anmeldedatum: 15.06.13
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 26.01.2015, 15:22     Titel:
  Antworten mit Zitat      
Hab es selbst hinbekommen. Musste mich nur in handles und hObject einlesen. Dann fielen einem die ganzen Fehler auf.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.