gpt4 book ai didi

c - 在 C 中使用 "GtkWidget *window "与 "GObject *window "

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:02 24 4
gpt4 key购买 nike

使用 GTK+ 3(和 glade)从 xml glade 文件创建简单窗口时,正确的语法是什么?我见过两种似乎做同样事情的方法,但语法略有不同。

示例 1:

#include <gtk/gtk.h>

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

gtk_init (&argc, &argv);

builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "builder.glade", NULL);

window = gtk_builder_get_object (builder, "window");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

gtk_main ();

return 0;
}

示例 2:

#include <gtk/gtk.h>

void
on_window_destroy (GtkWidget *object, gpointer user_data)
{
gtk_main_quit ();
}

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

gtk_init (&argc, &argv);

builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "builder.glade", NULL);

window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
gtk_builder_connect_signals (builder, NULL);

g_object_unref (G_OBJECT (builder));

gtk_widget_show (window);
gtk_main ();

return 0;
}

最佳答案

两者都应该工作,但我认为使用 GtkWidget 更合理,因为您将更多地需要这种类型,所以您不需要编写 GTK_WIDGET(obj)一直。您只需“转换”一次。

请注意,官方指南使用的是GObject类型。 ( here )

但毕竟您可以决定,因为您可以轻松地将其“转换”为您需要的类型...

关于c - 在 C 中使用 "GtkWidget *window "与 "GObject *window ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37037344/

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