IA__gtk_widget_show: assertion `GTK_IS_WIDGET (widget)✀ failed

2024-12-19 13:44:18
推荐回答(4个)
回答1:

我也遇到类似的问题:
gtk_widget_get_screen (window);//代码1,错误信息如下
IA__gtk_widget_get_screen: assertion `GTK_IS_WIDGET (widget)' failed
具体原因是:传递给gtk_widget_get_screen函数的window参数未实例化
修改代码:
GtkWidget *window;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //实例化
gtk_widget_get_screen (window);//代码1
这样就好了。

类似于我的问题,你的bug原因应该在gtk_widget_show中的某个控件未实例化。
可以用if(label)判断判断该控件是否存在(或者说实例化)。

回答2:

gtk+ 编译通过了,但是运行时提示“can't set a parent on widget which have a parent
这该如何解决?

回答3:

一般段错误是因为对内存的使用不正确造成的
你是编译通过,运行时出现段错误吗?
你用gcc -g - rdynamic `pkg-config --cflags --libs gtk+-2.0`源文件名.c -o 目标文件名 编译
然后输入gdb ./目标文件名 系统输出提示后你再输入r就可以对程序进行动态调试了,这样可以帮你定位段错误到底出现在哪个地方,虽然gdb给你的信息是汇编源码,但你可以大致看到出错的函数,我就是这样定位段错误的,然后推测。

回答4:

两次调用这个gtk_container_add 是不是调用重复了?