0

在 MATLAB 中,我创建了一个表,其中包含在删除之前调用的回调函数,以将所有信息保存在文件中:

t=uitable;
set(t,'Data',V1);
set(t,'ColumnEditable',c);
set(t,'DeleteFcn',@closeCallback);
waitfor(t); %wait until table closes

这是回调函数:

function closeCallback(src,eventdata)
%%
%this a callback function
h=gcbo();
A=table2array(h);
h=msgbox('Hi, I work!');
end

我打算然后保存数字数组,以便我可以在我的正常程序中使用它。

4

1 回答 1

0

正如@user3273814 所指出的,函数 table2array 不用于 uitable。表数据类型,这里不涉及。

您唯一需要做的就是以这种方式重写 closeCallback 函数:

function closeCallback(src,eventdata, handles) %See changes here
  %%
  %this a callback function
  h=gcbo();
  %A=table2array(h);
  A = get(handles.t, 'Data') % See changes here
  h = msgbox('Hi, I work!');
end

请注意,handles 是一个全局对象,它在触发事件时由 MATLAB 自动创建,它包含对所有图形对象的引用(在本例中名为 t 的 uitable)。

使用 get 我正在提取创建的 handles.t 对象的“数据”属性。如果 uitable 的内容仅为数字,则可以使用 cell2mat 将返回的数据类型转换为数字。

于 2014-07-16T20:29:55.627 回答