如何模拟用户单击来调用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/

相关内容

  • 没有找到相关文章

最新更新