guidata
存储或检索 UI 数据
说明
示例
在编程 UI 中存储数据
创建一个编程 UI,当您点击它时,它会存储和检索计数器数据。
首先,创建一个名为 progCounter.m
的程序文件。在该程序文件中:
创建一个图窗。
创建一个结构体,其中一个字段值初始化为零。
将数据存储在该图窗中。
定义一个回调函数,该回调函数从图窗中检索数据,更改数据,并在图窗中再次存储新数据。
运行程序并在图窗内点击。更新后的数据出现在命令行窗口中。
f = figure; data.numberOfClicks = 0; guidata(f,data) f.ButtonDownFcn = @My_Callback; function My_Callback(src,event) data = guidata(src); data.numberOfClicks = data.numberOfClicks + 1; guidata(src,data) data end
data = struct with fields: numberOfClicks: 1
在 GUIDE 中使用 guidata
在 GUIDE 中创建一个按钮,在按下该按钮时会存储和访问数据。为此,请先在 handles
结构体中添加一个字段,然后使用 guidata
对其进行更新和管理。(请确保将数据添加到 handles
,而不是覆盖它。有关详细信息,请参阅GUIDE 如何使用 guidata。然后,配置一个回调,用以在按下该按钮时使用 guidata
访问和存储数据。
为此,请首先打开 GUIDE,并在布局区域添加一个普通按钮。然后,点击编辑器图标以打开程序文件进行编辑。找到 GUIDE 自动创建的 OpeningFcn
,并向 handles
添加名为 numberOfClicks
的新字段。
% --- Executes just before countClicks is made visible. function countClicks_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 countClicks (see VARARGIN) % Choose default command line output for countClicks handles.output = hObject; handles.numberOfClicks = 0; % Update handles structure guidata(hObject, handles);
接下来,找到 GUIDE 创建的普通按钮回调函数。对其进行编程以访问存储在 handles
中的数据,对其进行修改,将更改后的数据保存到结构体中,并在命令行窗口中显示新数据。请注意,在 GUIDE 中,您使用 hObject
(而不是 src
)来引用正在执行其回调的对象。
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) handles.numberOfClicks = handles.numberOfClicks + 1; guidata(hObject,handles) data = guidata(hObject)
>> countClicks data = struct with fields: figure1: [1×1 Figure] pushbutton1: [1×1 UIControl] output: [1×1 Figure] numberOfClicks: 1
输入参数
obj
— 图形对象
图形对象
图形对象,如 Figure
、Axes
、Illustration
,或 UI 对象。使用此参量指定存储 data
的图窗。如果指定的对象不是图窗,则该对象的父图窗将用于存储 data
。
data
— 数据
任何 MATLAB® 数据
要存储在图窗中的数据,指定为任何 MATLAB 数据。通常,data
指定为结构体,以便您根据需要添加新字段。例如,创建具有名为 Category
的字段的数据结构体,将来自字段的数据存储在该结构体中,并在命令行窗口中显示存储的数据:
data.Category = 'Projected Growth';
guidata(gcf,data);
data = guidata(gcf)
算法
guidata
如何管理数据
无论何时,guidata
都只能管理每个父图窗中的一个变量。对 guidata(obj,data)
的后续调用会覆盖之前存储的数据。通过创建具有多个字段的结构体来存储更多数据。
GUIDE 如何使用 guidata
GUIDE 使用 guidata
来存储和维护称为 handles
的结构体。在 GUIDE 代码文件中,请不要覆盖 handles
结构体,否则您的程序将不再有效。如果您需要存储其他数据,可通过向 handles
结构体中添加新字段来执行此操作。
版本历史记录
在 R2006a 之前推出
另请参阅
guide
| guihandles
| getappdata
| setappdata
| struct
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)