简体   繁体   English

在GTK回调中发送数据

[英]Sending data in a GTK Callback

How can I send data through a GTK callback? 如何通过GTK回调发送数据? I've Googled, and with the information I found created this: 我已经用Google搜索了,并根据我发现的信息创建了它:

#include <gtk/gtk.h>
#include <stdio.h>
void button_clicked( GtkWidget *widget, GdkEvent *event, gchar *data);

int main( int argc, char *argv[]){
    GtkWidget *window;

    GtkWidget *button;

    gtk_init (&argc, &argv);


    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    button = gtk_button_new_with_label("Go!");


    gtk_container_add(GTK_CONTAINER(window), button);

    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(button_clicked),"test" );

    gtk_widget_show(window);
    gtk_widget_show(button);

    gtk_main();
    return 0;
}

void button_clicked( GtkWidget *widget, GdkEvent *event, gchar *data){
    printf("%s \n", (gchar *) data);
    return;
}

But it just Segfaults when I press the button. 但是当我按下按钮时,它只是Segfaults。 What is the right way to do this? 什么是正确的方法?

It segfaults because "clicked" doesn't have a GdkEvent parameter. 发生段错误是因为“被单击”没有GdkEvent参数。 If you remove the second argument in button_clicked() it should work. 如果您删除button_clicked()中的第二个参数,它应该可以工作。

Install Devhelp application from where you can easily browse GTK+ and GNOME documentation, including signal definitions. 从那里可以轻松浏览GTK +和GNOME文档(包括信号定义)来安装Devhelp应用程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM