Main Content

guidata

UI データの格納または取得

説明

メモ

メイン アプリの Figure の UserData プロパティにアプリ データを格納した方がコードが読みやすくなる場合があるため、guidata を使用する方法よりも推奨されます。アプリ データの格納と共有の詳細については、コールバック間のデータ共有を参照してください。

guidata(obj,data) は、obj が Figure の場合はそれ自体のアプリケーションデータ、obj が別のコンポーネントの場合はその親 Figure のアプリケーションデータに、指定されたデータを格納します。詳細については、guidata によるデータの管理方法を参照してください。

data = guidata(obj) は、前回保存したデータを返します。何も保存されていない場合は空行列を返します。

すべて折りたたむ

クリックされたときにカウンター データを保存して取得するプログラム UI を作成します。

まず、progCounter.m というプログラム ファイルを作成します。プログラム ファイル内で次を行います。

  • Figure を作成します。

  • フィールド値をゼロに初期化して構造体を作成します。

  • データをこの Figure に保存します。

  • この Figure からデータを取得し、データを変更して、新しいデータをこの Figure に再度保存するコールバック関数を定義します。

プログラムを実行し、この Figure の内部をクリックします。更新されたデータがコマンド ウィンドウに表示されます。

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 を上書きするのではなく、必ずデータを追加してください。詳細については、GUIDE での guidata の使用方法を参照してください)。次に、ボタンが押されたときに guidata を使用してデータへのアクセスとデータの保存を行うコールバックを構成します。

このためには、まず GUIDE を開き、プッシュ ボタンをレイアウト エリアに追加します。次に、エディター アイコンをクリックして、編集に使用するプログラム ファイルを開きます。GUIDE により自動作成された OpeningFcn を特定し、numberOfClicks という新しいフィールドを handles に追加します。

% --- 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 では、コールバックが実行されているオブジェクトを参照するために、関数 src の代わりに hObject を使用することに注意してください。

% --- 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

入力引数

すべて折りたたむ

FigureAxesIllustration、UI オブジェクトなどのグラフィックス オブジェクト。この引数を使用して、data を保存する Figure を指定します。指定したオブジェクトが Figure でない場合、そのオブジェクトの親 Figure が data の保存に使用されます。

Figure に保存するデータ。任意の MATLAB データとして指定します。通常、data は構造体として指定します。これにより、必要に応じて新しいフィールドを追加できます。たとえば、Category というフィールドをもつデータ構造体を作成し、フィールドからのデータをこの構造体に保存して、保存したデータをコマンド ウィンドウに表示します。

data.Category = 'Projected Growth';
guidata(gcf,data);
data = guidata(gcf)

アルゴリズム

すべて折りたたむ

guidata によるデータの管理方法

関数 guidata は常に、親 Figure あたり 1 つの変数のみを管理できます。後続の guidata(obj,data) の呼び出しは、以前に格納したデータを上書きします。複数のフィールドをもつ構造体を作成して、追加データを格納します。

GUIDE での guidata の使用方法

GUIDE は、guidata を使用して、handles という構造体の保存および維持を行います。GUIDE コード ファイル内の handles 構造体を上書きしないでください。上書きするとプログラムが動作しなくなります。他のデータを保存する必要がある場合、handles 構造体に新しいフィールドを追加することで保存できます。

バージョン履歴

R2006a より前に導入