c - 如何将多个旋转按钮值传递给函数?(GTK/C)

标签 c gtk3

我无法通过旋转按钮传递多个值
我尝试用一​​个按钮进行许多回调,但是我需要同时接收和操作许多变量。

gint grab_int_value (GtkSpinButton *spinbutton, gpointer user_data)
{
    gint steps = gtk_spin_button_get_value_as_int (user_data);
    printf ("The value of the step is: %d ms.\n", steps);
}

done = gtk_button_new_with_mnemonic("_DONE");
g_signal_connect(done, "clicked", G_CALLBACK(grab_int_value), 
                                               spin_button1);
g_signal_connect(done, "clicked", G_CALLBACK(grab_int_value), 
                                               spin_button2);

最佳答案

创建一个struct并带有指向您需要在回调中操作的所有对象的指针,并添加一个指向该对象的指针作为用户数据:

typedef struct {
    GtkWidget *spin_button1;
    GtkWidget *spin_button2;
} Widgets;

...

Widgets* w = g_new(Widgets, 1);
w->spin_button1 = spin_button1;
w->spin_button2 = spin_button2;

...

g_signal_connect(done, "clicked", G_CALLBACK(grab_int_value), w);
g_signal_connect(done, "clicked", G_CALLBACK(grab_int_value), w);

...

int grab_int_value(GtkSpinButton *spinbutton, gpointer user_data) {
    Widgets *w = (Widgets *) user_data;
    int steps = gtk_spin_button_get_value_as_int(w->spin_button1);
    ...
}

关于c - 如何将多个旋转按钮值传递给函数?(GTK/C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53440668/

相关文章:

c - 为什么数组元素的总和最终总是打印相同的值?

c - C 中指针中的访问冲突错误

python - 在python Gtk3中使弹出式GtkMenu透明无边框

python - 下拉框中的 GTK3 Python 类型

c - 符号大小用来表示负数吗?

c - 如何在 C 中获取事件网络接口(interface)的列表?

c - 我们如何检查我们的程序多线程是否在我们的程序中工作?

gtk3 - 带有模板 UI 的自定义 Gtk 小部件

linux - 剪贴板 api 是否已从 gtk4 中删除?

css - 如何使用 css 代码单独设置 gtk 小部件的样式