我正在学习 Matlab 中的 GUI 编程。
我发现用于存储所有 gui 数据的句柄结构非常棘手。我想知 Prop 体的结构是怎样的。我将用一个例子来解释我的问题。
假设我们已经创建了 edittext1。
我们将存储handles.edittext1。 那么
str = get(hObject,'String');
set(handles.edittext1,'String',str);
这会将handles.edittext1中的字符串设置为str。
我的问题是 令我惊讶的是,get 和 set 操作中的“String”不区分大小写。
并且handles.edittext1.String不返回存储的字符串。
所以,handles 不是一个结构数组,接下来的问题是,handles 应该是什么结构? 同样的问题也可以问 hObject。
不,这不是家庭作业或作业。这是我工作中一个正在进行的项目。我使用 matlab 已有多年,但这是我第一次使用 matlab 制作 GUI。所以,请把我当作一个新手。
问候
最佳答案
hObject 是发出回调的对象的句柄(例如,单击时启动回调的按钮)。句柄是一个包含图形中所有对象的句柄的结构。每个对象的 hObject 都不同,相同的句柄列表将传递给每个回调。在您的示例中,如果在 edittext1 回调中,则 hObject 和 handles.edittext1 是相同的。
两者都是对象的句柄,而不是结构。所以你不能说handles.edittext1.String。对象的所有属性(如字符串内容)都是通过 set 和 get 函数访问的。正如您所观察到的,属性名称不区分大小写。希望回答了您所有的问题。
更新:
我对您的后续问题的回复对于评论来说太长,因此我更新了答案。
我不确定我是否理解你的问题。如果您想检查属性的值,请使用 get ,如问题中所示:
str = get(handles.edittext1, 'String');
如果您想检查属性是否存在或属性是什么,请调用 get 而不指定参数:
get(handles.edittext1)
这会将所有属性及其值打印到控制台。如果您想以编程方式执行此操作,
params = get(handles.edittext1);
将返回一个结构体,其字段是参数。然后您可以访问参数:
str = params.String
并且可以检查字段是否存在
isfield(params, 'String'); // This is case sensitive
关于user-interface - 在 matlab GUI 中处理结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788466/