gpt4 book ai didi

c++ - GTK+ : passing data with g_signal_connect not working

转载 作者:搜寻专家 更新时间:2023-10-31 01:17:23 31 4
gpt4 key购买 nike

我正在尝试通过 g_signal_connect 传递堆中分配的数据,但它显示出一些奇怪的行为。

我是这样传递值的:

int *test = new int(100);
g_signal_connect(G_OBJECT(deviceButton), "button_press_event", G_CALLBACK(showDeviceAndConnect), (gpointer) test);

并打印值:

static void showDeviceAndConnect(GtkWidget * deviceButton, gpointer data)
{
int *test = (int *) data;
fprintf(stderr, "Test: %d\n", *test);
}

打印的值一直是 4。我将 new int() 更改为 3、5 等...,它始终打印 4。

我很困惑。请问有人知道哪里出了问题吗?

编辑:

有人帮我弄明白了。函数签名实际上是错误的并且缺少一个参数。这很愚蠢,但很难弄清楚。

最佳答案

是的,您对 GtkWidget::button_press_event 的回调签名是错的。但是,如果您要检测的是对 GtkButton 的点击,请连接到 GtkButton::clicked信号代替。

关于c++ - GTK+ : passing data with g_signal_connect not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8146420/

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