Сохраните или получите данные пользовательского интерфейса
guidata (object_handle, данные)
данные = guidata (object_handle)
guidata(object_handle,data)
хранит переменный data
объектом, заданным object_handle
. Если object_handle
не является фигурой, то родительская фигура объекта используется. data
может быть любой переменной MATLAB®, но обычно является структурой, которая позволяет вам добавить новые поля как требуется.
guidata
может управлять только одной переменной в любое время. Последующие вызовы guidata(object_handle,data)
перезаписывают ранее сохраненный data
.
GUIDE использует guidata
, чтобы сохранить и поддержать структуру handles
. В файле кода GUIDE не перезаписывайте структуру handles
, или ваша программа больше не будет работать. Если необходимо хранить другие данные, можно сделать так путем добавления новых полей к структуре handles
.
data = guidata(object_handle)
возвращает ранее хранившие данные или пустую матрицу, если ничто не сохранено.
Изменить данные, управляемые guidata
:
Получите копию данных с командой data = guidata(object_handle)
.
Внесите желаемые изменения в data
.
Сохраните измененную версию data
с командой guidata(object_handle,data)
.
guidata
предоставляет разработчикам приложений удобный интерфейс к данным приложения фигуры:
Вы не должны создать и поддержать трудно закодированное имя свойства данных приложения всюду по вашему исходному коду.
Можно получить доступ к данным из стандартной программы обратного вызова локальной функции использование указателя компонента (который возвращен gcbo
), не будучи должен найти указатель фигуры.
Если вы не используете GUIDE, guidata
особенно полезен в сочетании с guihandles
, который создает структуру, содержащую все компоненты в пользовательском интерфейсе.
Этот пример вызывает guidata
, чтобы сохранить структуру, содержащую данные приложения фигуры из раздела инициализации файла кода приложения. Первый раздел показывает, как сделать это в программируемом пользовательском интерфейсе. Второй раздел показывает, как код отличается, когда вы используете GUIDE, чтобы создать файл шаблона кода. GUIDE обеспечивает структуру handles
в качестве аргумента ко всем обратным вызовам локальной функции, таким образом, вы не должны вызывать guidata
, чтобы получить его. Действительно, однако, необходимо вызвать guidata
, чтобы сохранить изменения, которые вы вносите в структуру.
Вызывание функции guihandles
создает структуру, в которую ваш код помещает дополнительные данные. Это содержит все указатели, используемые фигурой в то время, когда это называется, генерируя имена полей на основе свойства Tag
каждого объекта.
% Create figure figure_handle = figure('Toolbar','none'); % create structure of handles myhandles = guihandles(figure_handle); % Add some additional data as a new field called numberOfErrors myhandles.numberOfErrors = 0; % Save the structure guidata(figure_handle,myhandles)
Можно вспомнить данные из локальной функции обратного вызова, изменить ее, и затем заменить структуру в фигуре:
function My_Callback() % ... % Get the structure using guidata in the local function myhandles = guidata(gcbo); % Modify the value of your counter myhandles.numberOfErrors = myhandles.numberOfErrors + 1; % Save the change you made to the structure guidata(gcbo,myhandles)
При использовании GUIDE, вы не должны вызывать guihandles
, чтобы создать структуру. Можно добавить собственные данные к структуре handles
. Например, этот код добавляет поле, numberOfErrors
, к структуре:
% --- Executes just before simple_gui_tab is made visible. function my_GUIDE_GUI_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 simple_gui_tab (see VARARGIN) % ... % add some additional data as a new field called numberOfErrors handles.numberOfErrors = 0; % Save the change you made to the structure guidata(hObject,handles)
hObject
вместо gcbo
, чтобы относиться к объекту, обратный вызов которого выполняется.Предположим, что необходимо было получить доступ к полю numberOfErrors
в обратном вызове кнопки. Ваш код обратного вызова теперь выглядит примерно так:
% --- Executes on button press in pushbutton1. function my_GUIDE_GUI_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) % ... % No need to call guidata to obtain a structure; % it is provided by GUIDE via the handles argument handles.numberOfErrors = handles.numberOfErrors + 1; % save the changes to the structure guidata(hObject,handles)
getappdata
| gUIDE
| guihandles
| setappdata