
Ubuntu日本語フォーラム

ログインしていません。
Anjutaを使ってプログラムを組むのに取り組んでいるのですが
解らない点がありまして、質問させていただきます。
GtkButtonのシグナル設定clickedの
ハンドラ名にtest_button_exec
User dataにTopWindowに該当するGtkWindow
を設定し
test_button_exec.cを作成し
void test_button_exec(GtkButton *button, gpointer user_data)
{
GtkEntry *entry1;
GtkEntry *entry2;
entry1 = GTK_ENTRY(g_object_get_data(G_OBJECT(user_data), "entry1"));
entry2 = GTK_ENTRY(g_object_get_data(G_OBJECT(user_data), "entry2"));
/* 以下処理 */
}
とTopWindowに追加した複数のentryを取得したいのですが
どーにもentry1と2にNULLしか返ってくなくて悩んでます。
User dataに片方だけ与えて変更等は出来るのですが
処理の関係上複数でやりたく、ネットで検索したりしてるのですが
g_object_get_dataで出来てる解説しか見つからず、探し方が悪いのか…
多分単純な事だとは思うのですが
解る方がいらっしゃいましたらご教授お願い出来ませんでしょうか。
環境は Ubuntu 11.10 でapt-getで標準的にインストールされるライブラリ等を使用してます。
Anjutaのプロジェクトも作成時のデフォルトのままでやってます。
オフライン
お世話になります。 環境が同じかわかりませんので回答になっていないようでしたらごめんなさい。
私の考えた案
・画面を自分でロジックで作成している場合は、GktButton*やGktEntry*の変数はグローバル宣言しておく
・UIファイルをつかって、GktBuilderで画面をアクセスしている場合は
・GktBuilder* 変数 をグローバル宣言に変更する
・関数内では
{
GtkEntry *entry1;
GtkEntry *entry2;
entry1 = GTK_ENTRY(gtk_builder_get_data(builder, "entry1")); <----変数builderはGtlBuilder*のグローバル宣言変数です。
entry2 = GTK_ENTRY(gtk_builder_get_data(builder, "entry2"));
}
でとってくることができました。
以上
user_dataをTOPWinowにして子供のWidgetを取得できるような関数は見つけれませんでした。
オフライン
すいません。関数を間違ってました
誤 gtk_builder_get_data
正 gtk_builder_get_object
以上
オフライン