【发布时间】:2021-10-08 17:39:57
【问题描述】:
我正在使用 GTK 库为我的应用程序制作一个简单的 GUI,但我在管理窗口导航时遇到了一些问题。特别是,我无法从一个窗口返回到屏幕上显示的前一个窗口。我已经尝试了多种可能性,例如:
gtk_window_set_focus, gtk_window_present 但它们不起作用。
代码如下:
void callback(GtkWidget *wid, gpointer ptr)
{
GtkWidget *win = static_cast<GtkWidget*>(ptr);
gtk_window_fullscreen(GTK_WINDOW(win));
}
int main()
{
gtk_init(NULL,NULL);
GtkWidget *window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window1), "1th window");
gtk_window_fullscreen(GTK_WINDOW(window1));
GtkWidget *btn1 = gtk_button_new_with_label ("Go to 2th window");
gtk_container_add (GTK_CONTAINER (window1), btn1);
gtk_widget_show_all(window1);
GtkWidget *window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window2), "2th window");
GtkWidget *btn2 = gtk_button_new_with_label ("Go back to 1th window");
gtk_container_add (GTK_CONTAINER (window2), btn2);
g_signal_connect(window1,"delete-event",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(window2,"delete-event",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect (btn1, "clicked", G_CALLBACK (callback),window2);
g_signal_connect (btn2, "clicked", G_CALLBACK (callback),window1);
gtk_widget_show_all(window2);
gtk_main();
}
问题是当我push btn2时,即使调用了回调函数,前一个窗口也不会成为活动窗口。
【问题讨论】:
标签: c++ user-interface callback gtk