gpt4 book ai didi

c - GtkApplication 和 gtk_init 有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 00:51:08 33 4
gpt4 key购买 nike

我现在正在学习在 Linux 中使用 GTK+3.0 和 C。阅读一些教程和示例代码后,我对如何初始化应用程序有一些疑问。

这是我见过的两个版本的代码。

#include <gtk/gtk.h>

static void
activate (GtkApplication* app,
gpointer user_data)
{
GtkWidget *window;

window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
gtk_widget_show_all (window);
}

int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;

app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);

return status;
}

此代码使用 gtk_application_new() 初始化一个 GtkApplication 并使用 g_application_run() 启动它。

这是第二个。

#include <gtk/gtk.h>

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

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"helloworld");
gtk_widget_show(window);
gtk_main();

return 0;
}

此代码使用 gtk_init() 初始化应用程序并使用 gtk_main() 运行它。

但是,我无法弄清楚它们之间的区别,因为运行结果似乎是一样的。

最佳答案

gtk_init()函数初始化库使用的内部变量,g_application_new()在内部调用gtk_init(),所以有没有区别或相似之处,它们服务于不同的目的,只是其中一个包含另一个。

我不是通过阅读文档或类似的东西知道这一点的,这只是一个合乎逻辑的结论。

GtkApplication 的创建可能是为了避免在 Gtk+ 库中使用全局变量,而现在您可以使用 GtkApplication 来保存应用程序范围的变量.

所以这似乎是正确的做法,我个人喜欢它,但是我已经有一段时间没有写 Gtk+ 应用程序了,而且是版本 2,所以我对它了解不多。

Gtk+ 有一个很棒的特性,那就是它有很好的文档记录,只需谷歌搜索 GtkApplication,您就会更好地理解它的用途以及应该如何使用它。

关于c - GtkApplication 和 gtk_init 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082659/

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