Matlab停在载入界面,试图在Matlab用户界面中实现保存/加载对象功能时遇到了困难...

我尝试在Matlab(R2009A)用户界面中实现保存/加载函数。我的对象实现了一个布局函数,它为对象生成一个用户界面。我正在尝试实现保存/加载按钮的回调。“保存”按钮起作用,并将对象保存到一个mat文件中,该文件可以稍后加载。

我的问题是实现加载按钮的回调。我似乎无法从mat文件加载数据并更新新对象的属性。任何关于我哪里出错的建议,以及关于我如何继续工作的建议,都非常感谢。

重要的代码是我的类定义文件,当然,我的实际对象实现了更多的属性和方法,但这里是我所拥有的框架

classdef myObj

properties

image % property holds a matlab image matrix

objCount % number of objects in image

end

properties(Transient=true)

parent

children

end

methods

function myObj

% empty constructor

end

function load_object(self)

% ask user for file

[fileName, pathToFile]=uigetfile('*.mat','Select .mat file');

tmp = load(fullfile(pathToFile,fileName);

if isfield(tmp,'obj')

self = tmp.obj;

end

end

LayoutFcn(self) % UI layout function

end

end

用户界面布局在单独的文件中定义。

L.

基本上看起来像

function LayoutFcn(self)

% create figure window and add various UI elements

...

% create load button

self.children(end+1) = uipushtool('Parent',hToolbar, ... % set parent to current toolbar

'CData',iconRead('open-document.png'), ... % read icon image from file

'Tag','uiLoad', ...

'ClickedCallback',@(hObj,event)loadingMyObject(self,hObj,event));

% create save button

self.children(end+1) = uipushtool('Parent',hToolbar, ... % set parent to current toolbar

'CData',iconRead('save-document.png'), ... % read icon image from file

'Tag','uiSave', ...

'ClickedCallback',@(hObj,event)savingMyObject(self,hObj,event));

...

end

function loadingMyObject(self,hObj,event)

self.load_object; % call load_object method defined above in class definition

end

function savingMyObject(self,hObj,event)

[fileName,pathName]=uiputfile('.mat','Save object to MAT file');

obj = self;

save(fullfile(pahtName,fileName),'obj')

end

注:

我使用的是matlab r2009a。

代码不会引发任何错误。我编写代码的方式父对象(由

自己

)呼叫后不更新

负载

在该方法中

加载对象

. 因此,这具有预期的效果:

>> var = myObj;

>> var.load_object;

但是,如果我使用

加载MyObjor对象

回调定义于

L.

以这种方式

>> var = myObjl

>> var.LayoutFcn

-> click Load button to call _loadingMyObject_

不影响

var

性质。那就是

var

单击“加载”按钮后仍将具有其默认属性值。

更改要使用的加载方法

设置

正如建议的那样

gnovice

引发以下错误

????使用=>集时出错

无法从FujiCalibration转换为Double。

即使我为每个属性设置/获取方法;如

method set.image(self,II)

% ... some data validation code ...

self.image = II

end

使用循环按建议设置每个字段

Mr Fooz

不是一个真正的选项,因为我的完整类有一个公共常量,当它们被设置时会抛出一个错误。

我正在寻找一种解决方案,它可以避免我必须单独地对每个字段进行代码设置。虽然在这一点上,这似乎是唯一的可能性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值