guidata

Храните или извлекайте данные пользовательского интерфейса

Используйте эту функцию только с GUIDE или с приложениями, созданными с помощью figure функция.

Описание

пример

guidata(obj,data) хранит указанные данные в данных приложения obj если это рисунок или родительский рисунок obj если это другой компонент. Для получения дополнительной информации см. раздел «Как Guidata управляет данными».

пример

data = guidata(obj) возвращает ранее сохраненные данные или пустую матрицу, если ничего не сохранено.

Примеры

свернуть все

Создайте программный пользовательский интерфейс, который хранит и извлекает данные счетчика при клике по нему.

Сначала создайте программный файл с именем 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, и сохраните и получите доступ к данным при нажатии кнопки. Для этого сначала добавьте поле в handles структура и использование guidata для обновления и управления им. (Убедитесь, что добавили данные к handles вместо того, чтобы перезаписывать его. Для получения дополнительной информации смотрите HOW GUIDE Uses guidata.) Затем сконфигурируйте коллбэк, который использует guidata для доступа и хранения данных при нажатии кнопки.

Для этого сначала откройте GUIDE и добавьте кнопку в область размещения. Затем щелкните значок Editor, чтобы открыть программный файл для редактирования. Найдите OpeningFcn который был автоматически создан GUIDE и добавить новое поле в 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

Входные параметры

свернуть все

Графический объект, такой как Figure, Axes, Illustration, или объект пользовательского интерфейса. Используйте этот аргумент, чтобы задать рисунок, которая хранит data. Если указанный объект не является рисунком, то родительский рисунок объекта будет использоваться для хранения data.

Данные для хранения на рисунке, заданные как любые данные 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