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

标签 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。

最佳答案

这就是 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");

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

关于c++ - 将额外值传递给 GTK+ 中的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23045571/

相关文章:

java - 为 NewObjectA() 函数创建 jvalues args 数组时出错 - JNI 调用 API

c++ - 尝试使用函数计算剩余球员的球队数量

c++ - 如何使用 GTK+ 设置 CMakeLists?

linux - 当内容缩小时动态缩小 GTK+ 中的窗口?

c++ - std::vector.push_back() 抛出 badalloc 异常

c++ - 限制 CPU 速度以进行分析

c - Linux 上 C 中的 GTK+ 3.0 : handle multiple calls of callback function by signals

c - 如何在 GTK 中检查单选按钮是否被选中

c# - Visual Studio 2010 中的 GTK#

c++ - 无法访问基类字段