如何在单击单个按钮时更改多个标签值。通常在按钮单击信号连接上我们只能提供一个用户数据。 示例代码
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);
我想通过单击按钮更改两个标签。
最佳答案
通常您会定义、分配和填充一个结构,该结构包含所有可能必须在初始化代码中动态更改的小部件:
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
.
关于c - Gtk 在单击按钮时更改多个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220963/