2011-07-11 49 views
5

Me pregunto cómo editar el botón "cerrar" (o los botones minimizar/maximizar) en la esquina superior derecha de una ventana que se creó con la biblioteca GTK. Intento eliminar la capacidad del usuario para destruir esta ventana y solo permitir que la ventana de nivel superior la destruya, así que quiero que el botón X (cerrar ventana) en la esquina superior derecha solo oculte la ventana en lugar de cerrarla, permitiéndola para ejecutar en segundo plano.GTK C - Cómo editar la función del botón Cerrar ventana (el botón X en la esquina superior derecha)?

Soy algo nuevo en gtk y he pasado por algunos tutoriales para principiantes en términos de crear ventanas y agregar botones, pero nada muy avanzado.

Supongo que esto se puede lograr utilizando una llamada gtk_window_hide en la ventana en lugar de la funcionalidad actual del botón X pero no estoy seguro de dónde usarlo porque las funciones para los botones predeterminados no parecen ser fáciles accesible.

Respuesta

8

En GTK escuchas las señales que envían los widgets. En otros lenguajes como Java (en el que puede estar más familiarizado con la terminología), a menudo se los llama Eventos.

Si ocurre un evento, como "eliminar" el widget, se activa la señal correspondiente, a la que puede aplicar mediante la conexión con g_signal_connect y similares.

Le sugiero que instale devhelp para obtener una buena documentación/ayuda en línea para GTK.

Este pequeño código debería seguir adelante, espero que se lo explique a usted.

#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; 
    } 
4

Esto es para lo que se usa gtk_widget_hide_on_delete. será de esa manera sólo se puede ocultar

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

Su ventana secundaria. Simplemente coloque un menú o una herramienta en su ventana principal para poder mostrar/ocultar nuevamente.

El "evento de eliminación" es el que se llama cuando se hace clic en el botón "cerrar" del administrador de ventanas.

Cuestiones relacionadas