前言
上一篇写了一些注重点,现在把多窗口及其他注意点总结一下
多窗口
- 在多窗口切换过程中,当前m文件的窗口默认都为
figure1
- 多个窗口切换后,只能同时运行一个m文件
- 多窗口传值只能传递静态值。对于动态数据的传递,全局变量无法传递(句柄结构方式没有尝试,需要重新写GUI,太麻烦),怎么解决的?再将动态数据的处理过程复制一遍…
- 标志着子窗口返回主窗口的完整过程关键语句是
uiresume(handles.figure1);
其他
- 在添加删除GUI中的表格时,先加载一个矩阵,利用矩阵的加减来操作
function biaoding01_OpeningFcn(hObject, eventdata, handles, varargin)
%加载窗体时加载一个空矩阵
load('Cal_data.mat','Cal_data')
function pushbutton1_Callback(hObject, eventdata, handles)
%添加矩阵
new_cal_array=[a;b];
old_cal_data=get(handles.uitable1,'Data');
Cal_data=[old_cal_data;new_cal_array];
set(handles.uitable1,'Data',Cal_data);
save('Cal_data.mat','Cal_data')
function uitable1_CellSelectionCallback(hObject, eventdata, handles)
%表格选中操作
global hang_index
Cal_data=get(hObject,'Data');
hang=eventdata.Indices;
if isempty(hang)
hang_index=[];
else
hang_index=hang(1);
end
由于删除后会将选中行置为空,所以需要处理一下,否则报错,但不影响运行。
function pushbutton2_Callback(hObject, eventdata, handles)
%删除矩阵
Cal_data=get(handles.uitable1,'Data');
Cal_data(hang_index,:)=[];
set(handles.uitable1,'Data',Cal_data);
save('Cal_data.mat','Cal_data');
GUI图形界
比较完整的功能性演示
这部分代码比较简单,就不上传了
遇到的问题
- 还是窗口传值的问题,如果有大神能够实现多窗口动态数据实时传递,欢迎讨论。
刚开始学习这方面,很多不懂的,功能都是凑出来的,如果哪位大神觉得有改进的地方,欢迎指出。