[問題] 還是GtkBluder的問題

看板C_and_CPP (C/C++)作者 (琉璃螃蟹)時間16年前 (2009/06/30 18:24), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
這次貼上程式碼,比較好釋義 我一直找不到什麼可以來分辨每一個button的工具(code中的 ???) 我是想要用同一個function接受訊號 然後經過分辨button來分別做事情 btest.c /* 測試Button能否使用同一個函式分辨button */ #include <gtk/gtk.h> /* gcc -o btest -Wall -g btest.c `pkg-config gtk+-2.0 --cflags --libs ` -export-dynamic */ void test_function( GtkButton *button, gpointer data) { switch(???) { case ??? : system("vi"); case ??? : system("gedit"); default: g_print("test!!\n"); } } int main( int argc, char **argv ) { GtkBuilder *builder; GtkWidget *window; GtkWidget *but; gtk_init( &argc, &argv ); builder = gtk_builder_new(); gtk_builder_add_from_file( builder, "btest.xml", NULL ); window = GTK_WIDGET( gtk_builder_get_object( builder, "window1" ) ); but = GTK_WIDGET( gtk_builder_get_object( builder, "test_function" ) ); gtk_builder_connect_signals( builder, but ); g_object_unref( G_OBJECT( builder ) ); gtk_widget_show_all(window ); gtk_main(); return( 0 ); } 再貼上 xml第一個button的部份 <object class="GtkButton" id="button1"> <property name="label" translatable="yes">vi</property> <property name="width_request">200</property> <property name="height_request">40</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <signal handler="test_function" name="clicked"/> </object> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.19.50

06/30 21:34, , 1F
GtkWidget有一個property叫 gchar * name 應該可以用
06/30 21:34, 1F

06/30 21:36, , 2F
gchar * 不夠用的話,還可以用GObject的 g_object_set_data
06/30 21:36, 2F

06/30 22:10, , 3F
前面也有好心人回我 g_object_set_data 可是我看不是很懂
06/30 22:10, 3F

06/30 22:10, , 4F
如何使用這個function,請問有範例可以看嗎?
06/30 22:10, 4F

06/30 23:20, , 5F
google一下g_object_set_data,g_object_get_data
06/30 23:20, 5F

07/01 16:37, , 6F
g_object_get_data似乎無法使用咧,因為要先set
07/01 16:37, 6F

07/01 16:39, , 7F
我的目的是想以後只要新增在xml就好
07/01 16:39, 7F
文章代碼(AID): #1AIUVXEs (C_and_CPP)
文章代碼(AID): #1AIUVXEs (C_and_CPP)