gpt4 book ai didi

user-interface - gtk 格莱德需要帮助

转载 作者:行者123 更新时间:2023-12-01 03:49:38 24 4
gpt4 key购买 nike

我正在使用 Glade 制作用户界面。

我已经成功生成了glade文件

现在我必须在我的 C 代码中包含这个文件。

我正在使用以下代码:

#include <stdlib.h>
#include<gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *builder,*window,*button;
gtk_init (&argc, &argv);
builder=gtk_builder_new();
gtk_builder_add_from_file(builder,"shiv.glade",NULL);
window=GTK_WIDGET (gtk_builder_get_object(builder,"window1")) ;
button=GTK_WIDGET (gtk_builder_get_object(builder,"button1"));
g_object_unref(G_OBJECT(builder));
gtk_widget_show(button);
gtk_widget_show(window);
gtk_main ();
return 0;
}

我的 UI 是一个简单的窗口,有一个没有任何回调函数的按钮。

我在执行时遇到以下错误
GTK-CRITICAL **: IA__gtk_widget_show assertion 'GTK_IS_WIDGET(widget)' failed

最佳答案

改变:

GtkWidget *builder,*window,*button;

和:
GtkWidget *window,*button;
GtkBuilder *builder;

这应该解决。

例子:
#include <stdlib.h>
#include <gtk/gtk.h>

static void
close_window ( GtkWidget *widget, gpointer window)
{
printf("application close...\n");
gtk_widget_destroy((GtkWidget*)window);
}

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

gtk_init (&argc, &argv);
builder=gtk_builder_new();
gtk_builder_add_from_file(builder,"a.glade",NULL);

window = GTK_WIDGET (gtk_builder_get_object(builder,"window1")) ;
button = GTK_WIDGET (gtk_builder_get_object(builder,"button1"));

g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (close_window),window);
g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), G_OBJECT(window));

g_object_unref(G_OBJECT(builder));
gtk_widget_show_all( window );
gtk_main ();
return 0;
}

来自 GTK3 reference manual :
GtkBuilder — 从 XML UI 定义构建界面;
GtkWidget — 所有小部件的基类

关于user-interface - gtk 格莱德需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978837/

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