看板 C_and_CPP 關於我們 聯絡資訊
這次貼上程式碼,比較好釋義 我一直找不到什麼可以來分辨每一個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
jlovet:GtkWidget有一個property叫 gchar * name 應該可以用 06/30 21:34
jlovet:gchar * 不夠用的話,還可以用GObject的 g_object_set_data 06/30 21:36
QCANCER:前面也有好心人回我 g_object_set_data 可是我看不是很懂 06/30 22:10
QCANCER:如何使用這個function,請問有範例可以看嗎? 06/30 22:10
jlovet:google一下g_object_set_data,g_object_get_data 06/30 23:20
QCANCER:g_object_get_data似乎無法使用咧,因為要先set 07/01 16:37
QCANCER:我的目的是想以後只要新增在xml就好 07/01 16:39