2011-07-22 4 views
2

私はMatlabのGUIプログラムを学んでいます。はMATLABのGUI構造を扱います

すべてのGUIデータを格納するためにハンドル構造が使用されているのはかなり難しいことがわかりました。私はその構造がどのくらい正確かを知りたいです。私は私の質問を説明するための例を使用します。

ここで、edittext1を作成しました。

私たちはhandles.edittext1を格納します。 その後、

str = get(hObject,'String'); 
set(handles.edittext1,'String',str); 

これはSTRにhandles.edittext1に文字列を設定します。

私の質問は驚いたことに私のために、getとset操作で 'String'は大文字と小文字が区別されません。

handles.edittext1.Stringは、格納された文字列を返しません。

したがって、ハンドルは構造体配列ではありません。それに続く疑問として、どのようなハンドル構造にする必要がありますか? また、hObjectに対しても同じ質問をすることができます。

いいえ、宿題や課題ではありません。それは私の仕事のための進行中のプロジェクトです。私は何年もmatlabに取り組んできましたが、これは私がmatlabでGUIを作るのは初めてのことです。だから、私を初心者として扱ってください。

よろしく

答えて

4

hObjectは、コールバック(クリックされたときにコールバックを開始し、例えばボタン)を発行したオブジェクトへのハンドルです。 handlesは、Figure内のすべてのオブジェクトに対するハンドルを含む構造体です。 hObjectはオブジェクトごとに異なります。同じハンドルリストがすべてのコールバックに渡されます。あなたの例では、それがedittext1コールバックにある場合、hObjectとhandles.edittext1は同じです。

どちらも構造体ではなくオブジェクトに対するハンドルです。ですから、handles.edittext1.Stringと言うことはできません。オブジェクトのすべてのプロパティ(文字列の内容など)は、set関数およびget関数を介してアクセスされます。ご覧のとおり、プロパティ名では大文字と小文字は区別されません。あなたのすべての質問に答えてくれることを願います。

更新:

あなたのフォローアップの質問に対する私の回答は、コメントを長すぎたので、私は答えを更新しました。

ご質問がわかりません。あなたがプロパティの値を確認したい場合は、あなたがあなたの質問に示したようgetを使用:

str = get(handles.edittext1, 'String'); 

あなたはプロパティが存在するかの特性が何であるかどうかをチェックしたい場合は、パラメータを指定せずに取得する呼び出します。

get(handles.edittext1) 

これにより、すべてのプロパティとその値がコンソールに出力されます。プログラムでこれを行う場合は、

params = get(handles.edittext1); 

は、フィールドがパラメータである構造体を返します。あなたは(hgsetgetを、その後

str = params.String 

などのパラメータにアクセスすることができ、フィールドが私の知る限り

isfield(params, 'String'); // This is case sensitive 
+0

あなたの答えをありがとう。私はあなたが言ったように、オブジェクトへのハンドルであるという後続の質問をしています。オブジェクトのどのプロパティが定義されているかを確認するにはどうしたらいいですか? – newbie

0

でGUIコンポーネントへのすべてのハンドルですhandleスーパークラスから継承するクラス(OOP)のオブジェクトが存在するかどうかを確認することができますより正確には、それ自体はhandleのサブクラスです)。したがって、hObjectは、オブジェクト自体ではなく、オブジェクトへのポインタを格納します。

handleクラスとその共通サブクラスは、set/getなどの共通の機能(インターフェイス)を公開します(プロパティ名では大文字と小文字を区別しない部分一致が実行されます)。この場合、getter/setterメソッドを使用して、 "property" 'string'にアクセスする必要があります。

handlesはGUIDE生成のGUIで使用される変数で、ユーザーの便宜のためにコールバック関数に渡されます。これは単純な構造体(構造体配列ではない)です。したがって、各フィールドは異なるタイプのデータを格納できます。

注:MATLABには、このすべてを詳細に説明する優れたドキュメントがあります。私は関連するページへのリンクで後で答えを更新します。

関連する問題