Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
¿Cuál es la diferencia entre GtkApplication y gtk_init?

Ahora estoy aprendiendo a usar GTK+3.0 con C en Linux. Después de leer algunos tutoriales y código de muestra, tengo algunas preguntas sobre cómo inicializar una aplicación.

Aquí hay dos versiones de código que he visto.

 #include <gtk/gtk.h> static void activate (GtkApplication* app, gpointer user_data) { GtkWidget *window; window = gtk_application_window_new (app); gtk_window_set_title (GTK_WINDOW (window), "Window"); gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); gtk_widget_show_all (window); } int main (int argc, char **argv) { GtkApplication *app; int status; app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return status; }

Este código usaba gtk_application_new() para iniciar una GtkApplication y g_application_run() para iniciarla.

Este es el segundo.

 #include <gtk/gtk.h> int main(int argc,char *argv[]) { GtkWidget *window; gtk_init(&argc,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window),"helloworld"); gtk_widget_show(window); gtk_main(); return 0; }

Este código usaba gtk_init() para iniciar la aplicación y gtk_main() para ejecutarla.

Sin embargo, no puedo descifrar la diferencia entre ellos ya que el resultado de ejecución parece el mismo.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La función gtk_init() inicializa variables internas usadas por la biblioteca, g_application_new() llama a gtk_init() internamente, por lo que no hay diferencia o similitud, sirven para diferentes propósitos, es simplemente que uno de ellos incluye al otro.

No sé esto al leer la documentación o algo similar, es solo una conclusión lógica.

Probablemente, GtkApplication se creó para evitar el uso de variables globales dentro de la biblioteca Gtk+ y, en lugar de eso, ahora puede usar una GtkApplication para contener las variables de toda la aplicación.

Así que parece la forma correcta de hacerlo, personalmente me gusta, pero ha pasado un tiempo desde que escribí una aplicación Gtk+, y fue con la versión 2, así que no sé mucho al respecto.

Gtk+ tiene una gran característica y es que está muy bien documentado, solo GtkApplication en Google y comprenderá mejor para qué sirve y cómo debe usarse.

over 4 years ago · Santiago Trujillo Denunciar

0

Eche un vistazo a la documentación de GtkApplication .

Class GtkApplication maneja la inicialización, la vida útil de la aplicación, las ventanas principales, los recursos globales y demás. Si no desea usarlo, todo está bien, pero tendrá que hacer todas estas cosas manualmente si las necesita.

Y eso incluye la inicialización de Gtk: eso es llamar a gtk_init() .

over 4 years ago · Santiago Trujillo Denunciar

0

  1. GtkApplication presenta soporte de acción, puede usar una acción para desacoplar el elemento procesable (como menú, botón, ...) y las devoluciones de llamada correspondientes.
  2. puede usar g_application_send_notification para mostrar la notificación y reemplazar el obsoleto GtkStatusIcon .
  3. puede usar la línea de comando para abrir un archivo en una aplicación existente: https://developer.gnome.org/gio/stable/GApplication.html#GApplication-open
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda