【问题标题】:GTK C - How to edit function of close window button (the X button in the top right corner)?GTK C - 如何编辑关闭窗口按钮(右上角的 X 按钮)的功能?
【发布时间】:2011-10-02 18:28:01
【问题描述】:

我想知道如何编辑使用 GTK 库创建的窗口右上角的“关闭”按钮(或最小化/最大化按钮)。我试图删除用户销毁此窗口的能力,只允许顶级窗口销毁它,所以我希望右上角的 X 按钮(关闭窗口)只隐藏窗口而不是关闭它 - 仍然允许它在后台运行。

我对 gtk 有点陌生,我已经完成了一些关于创建窗口和添加按钮的初学者教程,但没有什么非常高级的。

我假设这可以通过在窗口上使用 gtk_window_hide 调用来代替 X 按钮的当前功能来完成,但我不确定在哪里使用它,因为默认按钮的功能似乎不容易访问.

【问题讨论】:

    标签: c window gtk


    【解决方案1】:

    您需要收听窗口小部件的delete-event

    【讨论】:

      【解决方案2】:

      在 GTK 中,您侦听小部件发出的信号。在其他语言中,如 Java(您可能更熟悉其中的术语),这些通常称为事件。

      如果发生事件,例如“删除”小部件,则会触发相应的信号,您可以通过连接 g_signal_connect 等来应用。

      我建议您安装 devhelp 以获得良好的 GTK 文档/在线帮助。

      这个小代码应该让你继续前进,我希望它对你来说是不言自明的。

          #include <stdio.h>
          #include <gtk/gtk.h>
          #include <stdlib.h>
      
          int
          main (int argc, char **argv)
          {
            GtkWidget *window;
      
            gtk_init (&argc, &argv);
      
            window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
            g_signal_connect (window, "delete_event", G_CALLBACK (gtk_window_iconify), NULL);
      
            gtk_widget_show (window);
            gtk_main ();
      
            return EXIT_SUCCESS;
          }
      

      【讨论】:

        【解决方案3】:

        这就是gtk_widget_hide_on_delete 的用途。

        g_signal_connect (window, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL);

        您的子窗口只会被隐藏。只需在主窗口中放置一个菜单或工具按钮即可再次显示/隐藏它。

        “删除事件”是单击窗口管理器的“关闭”按钮时调用的事件。

        【讨论】:

          猜你喜欢
          • 2012-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-23
          • 1970-01-01
          • 2021-12-09
          • 2011-03-18
          相关资源
          最近更新 更多