0

我正在 GUIDE 中创建一个应用程序。我发现使用 GUIDE 提供的“句柄”结构来快速存储数据会导致代码混乱/难以阅读。我决定最好的解决方案是创建自己的类来处理数据以及存储要在回调函数中使用的方法。我已经能够成功调用“annotatorGUI_OpeningFcn”(见下文)中的构造方法,但是当我在不同的回调函数中调用类方法时,它找不到对我的类的任何引用。此外,行“annotatorEngine = ....”用黄色下划线表示“分配给变量的值可能未使用”。似乎我的类声明并没有在整个 GUI 脚本中传播。我想避免使用“句柄”结构或声明“

编辑:到目前为止,似乎唯一有效的是将我的类对象声明为全局对象。但是,这仍然有点烦人,因为在每个回调中,我都必须编写“全局注释器引擎”。

% --- Executes just before annotatorGUI is made visible.
function annotatorGUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to annotatorGUI (see VARARGIN)

% Choose default command line output for annotatorGUI
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% CLASS CONSTRUCTED HERE 
annotatorEngine = annotatorGUIClass(handles.rawAxes, handles.psdAxes, handles.allPairsAxes) 

% UIWAIT makes annotatorGUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);

我调用方法的地方。

% --------------------------------------------------------------------
function loadData_Callback(hObject, eventdata, handles)
% hObject    handle to loadData (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[FileName, PathName] = uigetfile('*.mat', 'Select a data file to load');
annotatorEngine.loadData(FileName, PathName) 


return 
4

0 回答 0