Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

215
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!