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

use*_*781 2 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");
Run Code Online (Sandbox Code Playgroud)

我不能使用C++ 0x.

pto*_*ato 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");
Run Code Online (Sandbox Code Playgroud)

如果你使用Gtkmm,那么在C++中有更好的方法sigc,但是由于你使用的是GTK的C API,你必须以C方式进行.