我正在尝试以编程方式在 MATLAB 中创建一个单击事件,该事件将模拟用户单击 GUI 对象。对象的回调函数是子函数,所以不能直接调用。但是,我能够从对象中获取回调属性,该属性最终是一个 3×1 元胞数组,具有以下内容:
@uiBlockFn/callback_til [ 188.0011] [1x1 struct]
如何在代码中调用此回调函数,以模拟用户单击 GUI 对象时会发生的情况?
我正在尝试以编程方式在 MATLAB 中创建一个单击事件,该事件将模拟用户单击 GUI 对象。对象的回调函数是子函数,所以不能直接调用。但是,我能够从对象中获取回调属性,该属性最终是一个 3×1 元胞数组,具有以下内容:
@uiBlockFn/callback_til [ 188.0011] [1x1 struct]
如何在代码中调用此回调函数,以模拟用户单击 GUI 对象时会发生的情况?
假设您有一个带有句柄的图形对象hObject
,并且您得到了对象的回调,如下所示:
callbackCell = get(hObject,'Callback');
正如你所提到的callbackCell
,你得到的单元格数组最终是一个 3 元素单元格数组,第一个单元格中有一个函数句柄,其他两个单元格中有其他数据。当一个对象的回调被定义为一个单元格数组(就像你的情况一样)时,回调函数句柄(或字符串名称)存储在第一个单元格中,并且您想要传递给回调函数的其他输入参数在剩余的细胞。
但是,当激活对象时调用此回调时,实际上会在输入参数列表的开头由 MATLAB 自动插入 2 个附加参数。这些是:
hObject
:当前正在调用其回调的对象的句柄。eventData
:与用户激活事件相关的数据结构,通常只是空矩阵[]
(少数情况除外)。因此,如果您想模仿用户激活的对象的操作,您需要按如下方式调用回调函数(假设不需要事件数据):
callbackCell{1}(hObject,[],callbackCell{2:end});
这就是内置hgfeval函数的用途: http ://undocumentedmatlab.com/blog/hgfeval/