gpt4 book ai didi

signals - g_signal_connect_swapped() 的作用是什么?

转载 作者:行者123 更新时间:2023-11-30 17:03:25 28 4
gpt4 key购买 nike

根据GObject引用

g_signal_connect_swapped(instance, detailed_signal, c_handler, data); connects a GCallback function to a signal for a particular object. The instance on which the signal is emitted and data will be swapped when calling the handler.

不太明白这是什么意思。这是否意味着 data将指向 instance 所指向的对象和instance将指向 data 所指向的对象或者我在这里犯了一个错误?

如果是前者,那么这背后的逻辑是什么?

最佳答案

你理解正确。

这允许您执行如下操作:您有一个按钮(我们称之为 button),它应该隐藏另一个小部件(我们称之为 textview) )按下时。

然后你就可以这样做

g_signal_connect_swapped(button, 'clicked', G_CALLBACK(gtk_widget_hide), textview);

以实现这一目标。当按钮被按下时,它会生成“clicked”信号,并使用 textview 作为第一个参数和 button 作为第二个参数来调用回调。在本例中,回调为 gtk_widget_hide(),它只接受一个参数,因此第二个参数被忽略,因为这就是 C 调用约定的工作方式。

与下面的内容相同,但更短。

static void
on_button_clicked(GtkButton *button, GtkWidget *textview)
{
gtk_widget_hide(textview);
}

...elsewhere...

g_signal_connect(button, 'clicked', G_CALLBACK(on_button_clicked), textview);

基本上,如果您手动编写界面代码,它可以使您不必编写额外的函数。当然,可能还有一些我从未理解过的更实际的用途。

关于signals - g_signal_connect_swapped() 的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36192944/

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