c - Gtk 在单击按钮时更改多个标签

标签 c linux ubuntu gtk gtk3

如何在单击单个按钮时更改多个标签值。通常在按钮单击信号连接上我们只能提供一个用户数据。 示例代码

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/

相关文章:

Python nltk 只读

c++ - mpi All-to-All Scatter/Gather的高效实现

c++ - 使用 clEnqueueWriteBuffer 的内存损坏 - OpenCL

linux - shell 脚本中的主机名变量(非 FQDN)

linux - 使用带 apache 的正则表达式重定向

c++ - 在 Linux 中编译基本 QtWidgets 应用程序时出现 QtCreator 问题

python - 如何在 linux 中安装 csvformat?

c - ':' token 之前应为 ',' 、 ';' 、 '}' 、 '__attribute__' 或 '='

c - 如何使用c获得大文件大小

Java 进程在 Linux Hyper-V VM 上突然停止