我想知道如何编辑使用GTK库创建的窗口右上角的“关闭”按钮(或最小化/最大化按钮)。我试图删除用户破坏此窗口的能力,只允许顶级窗口销毁它,所以我想让右上角的X按钮(关闭窗口)只隐藏窗口而不是关闭它 - 仍允许它在后台运行。
我对gtk有点新,我在创建窗口和添加按钮方面经历了一些初学者教程但没有什么先进的。
我假设这可以通过在窗口上使用gtk_window_hide调用代替X按钮的当前功能来完成,但我不知道在哪里使用它,因为默认按钮的功能似乎不容易访问
答案 0 :(得分:8)
在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;
}
答案 1 :(得分:4)
这是gtk_widget_hide_on_delete的用途。
g_signal_connect (window, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL);
您的子窗口只会被隐藏。只需在主窗口中放置一个菜单或工具按钮,即可再次显示/隐藏它。
“删除事件”是在单击窗口管理器的“关闭”按钮时调用的事件。
答案 2 :(得分:1)
您需要收听窗口小部件的delete-event。