gpt4 book ai didi

c++ - 将参数/参数信号传递给 C 中 GTK+ 上的回调

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:25 26 4
gpt4 key购买 nike

这是我的代码:

#include <gtk/gtk.h>

G_MODULE_EXPORT void waka(GtkWidget *button, GtkWidget* entry1)
{
printf("%s",gtk_entry_get_text(GTK_ENTRY(entry1)));
}

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

GtkWidget *window, *button, *entry;

gtk_init(&argc,&argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

button = gtk_button_new_with_label("hha");
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(waka),entry);

entry = gtk_entry_new();

GtkWidget *vbox;

vbox = gtk_vbox_new(FALSE,2);

gtk_box_pack_start_defaults(GTK_BOX(vbox),button);
gtk_box_pack_start_defaults(GTK_BOX(vbox),entry);

gtk_container_add(GTK_CONTAINER(window),vbox);


gtk_widget_show_all(window);
gtk_main();


return 0;
}

当我启动它并尝试在输入框中填写一些字符串,然后单击按钮时,它显示“段错误”。这是怎么回事?

此外,回调仅适用于一个用户数据参数。如果我想要两个或更多参数,我必须在回调函数中以及在对 g_signal_connect() 的调用中做什么?

最佳答案

问题是您试图在 初始化它之前使用指向条目 的指针。我已经稍微更改了您的代码来解决此问题,看看它是否适合您:

#include <gtk/gtk.h>

void waka(GtkWidget *button, GtkWidget* entry1)
{
g_print("entry: %s\n", gtk_entry_get_text(GTK_ENTRY(entry1)));
}

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

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new_with_label("hha");
entry = gtk_entry_new();
vbox = gtk_vbox_new(FALSE, 2);

gtk_box_pack_start_defaults(GTK_BOX(vbox),button);
gtk_box_pack_start_defaults(GTK_BOX(vbox),entry);

gtk_container_add(GTK_CONTAINER(window),vbox);

g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(waka), entry);

gtk_widget_show_all(window);
gtk_main();

return 0;
}

希望这对你有帮助,问候

关于c++ - 将参数/参数信号传递给 C 中 GTK+ 上的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4853847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com