Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Gtk3 En C++

Estas en el tema de Gtk3 En C++ en el foro de C/C++ en Foros del Web. Buenas a todos, me he adentrado en el desarrollo de Gtk y c++ y tengo un pequeño problema con el método g_signal_connect que no termino ...
  #1 (permalink)  
Antiguo 27/09/2011, 09:51
Avatar de shaggyz  
Fecha de Ingreso: mayo-2008
Mensajes: 43
Antigüedad: 15 años, 11 meses
Puntos: 3
Gtk3 En C++

Buenas a todos, me he adentrado en el desarrollo de Gtk y c++ y tengo un pequeño problema con el método g_signal_connect que no termino de comprender. Mi objetivo es pasar un string al callback que le he asignado a un botón, el fragmento del código que hace esto es:

Donde asigno el callback:

Código C++:
Ver original
  1. GtkWidget *botonAplicacion;
  2.     botonAplicacion = gtk_button_new_with_label("X-Term");
  3.     g_signal_connect (botonAplicacion, "clicked", G_CALLBACK(MiClase::AbrirAplicacion), "xterm");

Y el callback en cuestión:

Código C++:
Ver original
  1. void MiClase::AbrirAplicacion(char* app_command){
  2.  
  3.     system(app_command);
  4.  
  5. }

Básicamente quiero abrir un xterm al presionar el botón, por lo que el método AbrirAplicacion recibe como párametro un string con el nombre del programa a abrir. Alguno me puede echar un cable?, solo necesito pasar un string al callback. He probado castearlo a gpointer como pone la definición de g_signal_connect pero el compilador me da un error al convertirlo a char*.

Agradecería mucho una ayuda ya que he encontrado documentación pero no la logro comprender.

Ya lo he solucionado, para que funcione se debe castear a gpointer en el callback:

Código C++:
Ver original
  1. g_signal_connect_swapped (botonAplicacion, "clicked", G_CALLBACK(MiClase::AbrirAplicacion), (gpointer)"xterm");

Y la conversión se debe hacer de gpointer a gchar en la función:

Código C++:
Ver original
  1. void Miclase::AbrirAplicacion(gpointer* app_command){
  2.  
  3.     system((gchar *)app_command);
  4.  
  5. }

Última edición por shaggyz; 28/09/2011 a las 03:36 Razón: Solucionado

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:45.