如何在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。
答案 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");