我有一个 C++ 程序,我在
main()
函数中首先使用了这个简单的 gtk 代码,我的目标是我的应用程序在启动时显示图像,并保持显示图像并保留程序的其余部分。
GtkWidget* window;
GtkWidget* image1;
GtkWidget* image2;
gtk_init (NULL,NULL);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
image1 = gtk_image_new_from_file("1.jpg");
image2 = gtk_image_new_from_file("2.jpg");
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT (window), "destroy",
G_CALLBACK (destroy), NULL);
gtk_container_add(GTK_CONTAINER (window), image1);
gtk_widget_show_all(window);
gtk_main();
THE REST OF PROGRAM THAT WONT EXECUTE!
但是当它打开一个窗口并显示图像时,它卡在那里并且不执行其余代码!为什么会出现这种情况?
执行
gtk_main
之后,您的代码将“阻塞”,如果我可以这么说的话,在该行中直到gtk_main_quit
它被调用/执行。
这是图形用户界面的本质。通常,您设置所有内容,调用主循环并等待用户交互。
Getting Started with GTK+
(已存档)。
举个例子,如果您在
printf
下面执行任何 gtk_main
,它将在您关闭 GtkWindow 后打印出来。
您的应用程序逻辑必须事先定义,然后通过用户交互、按下按钮和其他小部件,应用程序将执行“操作”。
当您调用
gtk_main
时,主循环开始。
主事件循环管理所有可用的事件源 GLib 和 GTK+ 应用程序。这些事件可以来自任意数量的 不同类型的源,例如文件描述符(普通文件, 管道或套接字)和超时。
The Main Event Loop
(已存档)。