guidata
UI データの格納または取得
説明
メモ
メイン アプリの Figure の UserData
プロパティにアプリ データを格納した方がコードが読みやすくなる場合があるため、guidata
を使用する方法よりも推奨されます。アプリ データの格納と共有の詳細については、コールバック間のデータ共有を参照してください。
guidata(
は、obj
,data
)obj
が Figure の場合はそれ自体のアプリケーションデータ、obj
が別のコンポーネントの場合はその親 Figure のアプリケーションデータに、指定されたデータを格納します。詳細については、guidata によるデータの管理方法を参照してください。
例
プログラム UI にデータを保存
クリックされたときにカウンター データを保存して取得するプログラム 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 での guidata
の使用
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
入力引数
obj
— グラフィックス オブジェクト
グラフィックス オブジェクト
Figure
、Axes
、Illustration
、UI オブジェクトなどのグラフィックス オブジェクト。この引数を使用して、data
を保存する Figure を指定します。指定したオブジェクトが Figure でない場合、そのオブジェクトの親 Figure が data
の保存に使用されます。
data
— データ
任意の MATLAB® データ
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 より前に導入
参考
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)