2013-10-07 68 views
0

如何更改单个按钮上的多标签值click.Normally在按钮上单击信号连接我们只能给出一个用户数据。 示例代码Gtk更改按钮上的多个标签点击

void show_loop(GtkWidget *widget, gpointer user_data) 
{ 
    char buf[5]; 
    int no = TxBuf.plBuf[7]; 
    sprintf(buf, "%d",no); 
    gtk_label_set_text(GTK_LABEL(user_data), buf); 
} 

ID_label=GTK_WIDGET (gtk_builder_get_object (builder, "label24")); 
DLC_label=GTK_WIDGET (gtk_builder_get_object (builder, "label25")); 

check = GTK_WIDGET (gtk_builder_get_object (builder, "button3")); 
g_signal_connect (check, "clicked", G_CALLBACK (show_loop), DLC_label); 

我想改变这两个单按一下按钮的标签。

回答

3

通常你需要定义,分配和填写包含所有可能要在初始化代码中动态地改变了小部件的结构:

typedef struct AppData { 
    GtkWidget *id_label; 
    GtkWidget *dlc_label; 
} AppData; 

... 

AppData *app_data = g_new0 (AppData, 1); 
app_data->id_label = GTK_WIDGET (gtk_builder_get_object (builder, "label24")); 
app_data->dlc_label = GTK_WIDGET (gtk_builder_get_object (builder, "label25")); 

的使用app_data作为用户数据参数,并且可以访问信号处理器内部的小部件例如app_data->id_label