gpt4 book ai didi

C++ g_signal_connect 传递数据

转载 作者:行者123 更新时间:2023-11-30 01:43:08 26 4
gpt4 key购买 nike

我正在尝试连接一个对象以销毁一个小部件,但什么也没有发生,而且我收到了一个错误

调用如下:

g_signal_connect(bKill, "clicked", G_CALLBACK(AppWindow::kill), (gpointer *)bBuzz);

方法:

void AppWindow::kill(GtkWidget* widget, gpointer data)
{
gtk_widget_destroy(GTK_WIDGET(data));
}

然而,什么也没有发生。几乎就好像甚至没有调用该方法一样。使用 g_print 检查它是否被调用也不起作用。

这是我得到的错误:

(kpf:15885): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(kpf:15885): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

我错过了什么吗?还是我真的把这段代码搞砸了?我对 GTK 还是有点陌生​​,所以我确定出了点问题..

最佳答案

您不能将类方法传递给 g_signal_connect(),因为它们具有成为 this 的隐式第一个参数。您必须使用常规函数并找到一种方法来在 data 参数中传递 bBuzz 变量和 this 指针。

(或者您可以使用 gtkmm,它已针对 C++ 进行了全面优化。)

关于C++ g_signal_connect 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38318746/

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