将额外值传递给GTK +中的信号

时间:2014-04-13 16:58:01

标签: c++ gtk

如何在GTK +中将额外值传递给信号?

例如:

void btnclicked(GtkWidget *widget, gpointer data, const char *str)
{
    std::cout << str;
}

g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(btnclicked), NULL, "extra string");

我无法使用C ++ 0x。

2 个答案:

答案 0 :(得分:5)

那是data参数的用途:

void btnclicked(GtkButton *button, gpointer data)
{
    const char *str = (const char *)data;
    std::cout << str;
}

g_signal_connect(button, "clicked", G_CALLBACK(btnclicked), "extra string");

如果您使用涉及sigc的Gtkmm,C ++中有更好的方法,但由于您使用的是GTK的C API,因此您必须采用C方式。

答案 1 :(得分:3)

将字符串作为数据传递给g_signal_connect(instance, detailed_signal, c_handler, data)并投射到处理程序中。

void btnclicked(GtkWidget *widget, gpointer data)
{
    std::cout << (const char*)data;
}

g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(btnclicked), "extra string");
相关问题