GTK +:使用g_signal_connect传递数据不起作用

时间:2011-11-16 03:46:43

标签: c++ gtk

我试图通过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。我将新的int()更改为3,5等等,它总是打印4。

我非常困惑。有谁请知道出了什么问题?

编辑:

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

1 个答案:

答案 0 :(得分:4)

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