gpt4 book ai didi

c - 将多个参数传递给 GTK 中的回调函数

转载 作者:太空狗 更新时间:2023-10-29 15:27:31 25 4
gpt4 key购买 nike

因此,我正在尝试实现以下目标:用户应能够填写多个 gtk_entry,然后点击 Apply,点击后我希望 Apply 按钮发出信号,如下所示:

g_signal_connect (G_OBJECT (Apply), "clicked", G_CALLBACK(apply_clicked), # an argument #);

然后,在 apply_clicked() 中,我希望保存输入的文本。

我的问题是:如何将那些 gtk_entry 传递给我的回调函数 apply_clicked?如果只有一个,我会把它设置为 # an argument #,但是我应该如何处理多个条目?

最佳答案

这样做的典型方法是:

g_object_set_data (context_object, "entry1", entry1);
g_object_set_data (context_object, "entry2", entry2);

g_signal_connect (G_OBJECT (Apply), "clicked", G_CALLBACK (apply_clicked), context_object);

然后在 apply_clicked 中:

GtkEntry *entry1 = g_object_get_data (context_object, "entry1");
...

通常 context_object 将是 GtkDialog 或这些小部件所在的任何内容。

或者,如果您子类化 GtkDialog,您可以:

struct _MyDialog {
GtkDialog parent_object;
GtkEntry *entry1;
GtkEntry *entry2;
...
};

然后,在构建对话框时,只需设置 entry1、2、3 等...,而无需使用 g_object_[g,s]et_data() hack。

关于c - 将多个参数传递给 GTK 中的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684466/

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