gpt4 book ai didi

c - GTK C - 使用 g_signal_connect 传递多个变量

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:47 24 4
gpt4 key购买 nike

所以,我正在努力实现以下目标:

用户正在选择文件,该文件的路径保存在变量文件名中。选择文件后,用户通过复选框选择要设置的 chmod。

我有这样的东西:

g_signal_connect (ux, "toggled",G_CALLBACK(user_read_only), (gpointer *)ux);

和函数 user_read_only:

void user_read_only(GtkWidget *widget, gpointer *data)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))){
int stat;
stat = chmod(filename, S_IRUSR);
printf("Added Read attribute to user in file: %s\n", filename);
} else {
printf("No Read attribute to user in file: %s\n", filename);
}
}

我的问题是:如何将文件名传递给我的回调函数?当我尝试时:

g_signal_connect (ux, "toggled",G_CALLBACK(user_read_only), (gpointer *)ux,filename);

我收到错误消息,我只能传递 1 个变量。

最佳答案

gpointer 类型的数据参数用于将任何类型的数据传递给回调。

g_signal_connect (ux, "toggled",G_CALLBACK(user_read_only), (gpointer *)filename);

应该可以解决问题。您不需要将 GTK 实例 (ux) 作为数据传递。您还需要将函数更改为:

void user_read_only(GtkWidget *widget, gpointer *data)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))){
int stat;
stat = chmod(data, S_IRUSR);
printf("Added Read attribute to user in file: %s\n", (char *)data);
} else {
printf("No Read attribute to user in file: %s\n", (char *)data);
}
}

关于c - GTK C - 使用 g_signal_connect 传递多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com