如何将参数从一个回调发送回其他回调?

时间:2014-04-07 19:19:09

标签: matlab callback matlab-figure matlab-guide

我有这些回调函数:

function q7_OpeningFcn(hObject, eventdata, handles, varargin)

-----
-----
function column_icrement_Callback(hObject, eventdata, handles)

----
----

function row_icrement_Callback(hObject, eventdata, handles)
----
----

function width_increment_Callback(hObject, eventdata, handles)
---
---

这是我要从function q7_OpeningFcn(hObject, eventdata, handles, varargin)发送参数的最后3个函数。我已成功加载图片,但我不确定是否可以发送超过3个参数来调整行,列,高度,宽度?

2 个答案:

答案 0 :(得分:3)

不要使用全局变量。使用handles结构传递此数据。

q7_OpeningFcn中,存储此数据(例如handles.rows=...)。

在回调中,您将拥有handles结构中的数据。

如果您在回调中更改handles中的值,则需要运行guidata(hObject,handles)。请参阅Store Data Using the guidata Function及其中的示例。

您还可以使用setappdata / getappdata按名称存储和检索数据"application data")。有关这两种方法的详细信息,请参阅文章Share Data Among Callbacks

Even more on storing data in a GUI

答案 1 :(得分:0)

定义全局变量 http://www.mathworks.com/help/matlab/ref/global.html

摘要:将global row, col, ...放在q7_OpeningFcn的开头。然后在负责其中一个变量的每个函数中将global row=value放在该函数中。

例如:

function q7_OpeningFcn(hObject, eventdata, handles)
    global column, row, width
    doStuff 
end

function column_icrement_Callback(hObject, eventdata, handles)
    global column
    column=value
end

function row_icrement_Callback(hObject, eventdata, handles)
    global row
    row=value
end

function width_increment_Callback(hObject, eventdata, handles)
    global width
    width=value
end