【问题标题】:How to manage windows navigation with GTK library C++如何使用 GTK 库 C++ 管理 Windows 导航
【发布时间】: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


    【解决方案1】:

    为此更改您的处理程序(为简单起见,删除了全屏行):

    void callback(GtkWidget *wid, gpointer ptr)
    {
        // This, by itself, does nothing (see next line):
        GtkWindow *win = static_cast<GtkWindow*>(ptr);
    
        // This changes the active window on screen:
        gtk_window_present(win);
    }
    

    诀窍是在处理程序中使用gtk_window_present(你的处理程序除了全屏之外什么都不做)。

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 1970-01-01
      • 2011-04-11
      • 2015-12-30
      • 2020-12-09
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多