【发布时间】:2014-09-26 14:50:44
【问题描述】:
我一直在为 Matlab 中的计算程序开发 GUI,该程序以面向对象的方式实现。所以我正在考虑如何将GUIDE创建的GUI代码集成到类中以保持一致性。
首先我搜索了 Stackoverflow 以找出类似的问题,然后我得到了一个 Click。
我尝试了该答案中提到的方法,但失败了。所以任何人都可以给我更多的细节和建议会非常有帮助!
我的代码是这样组织的:
classdef A < handle
methods
function obj = A(varargin)
%some code
end
function Aplot(obj,varargin)
%some code
obj.fh = Aview(obj)
end
function varargout = Aview(varargin)
% this is the code generated by GUIDE in a seperate file
% associated with AView_OpeningFcn(hObject, eventdata, handles, varargin)
% and component(edit, popupmenu,etc) callback functions
end
然后我在windows中的每个组件(按钮,弹出菜单)都有很多错误,通常是这样的:
“char”类型的输入参数的未定义函数“AView”。
@(hObject,eventdata)AView('popupmenu1_CreateFcn',hObject,eventdata,guidata(hObject) 中的错误
使用 struct2handle 时出错
评估 uicontrol CreateFcn 时出错
如果我需要对象 A 内部的一些数据结构,我如何才能成功地将 A 类的对象传递给 GUI 函数 AView 窗口?
提前致谢:)
更多cmets:我没有将GUIDE生成的文件复制到A类中。而是将GUIDE生成的文件放在名称为@A的文件夹中,与A.m相同。这样,GUIDE生成的函数就会被视为A类的方法
参考:在http://www.mathworks.com/help/matlab/matlab_oop/specifying-methods-and-functions.html#brqy3km-15中搜索“单独文件中的方法”
【问题讨论】:
-
我不确定我是否理解,您是否将引导函数中的代码复制到您的课程中?
-
不是,我创建了一个文件夹,名字是@A,把guide生成的文件放到这个文件夹里,这样GUIDE创建的函数就会被当作A类中的方法。参考: 在 mathwork 网站中搜索“单独文件中的方法”
标签: matlab oop user-interface matlab-guide