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

Error con una señal clicked()

Estas en el tema de Error con una señal clicked() en el foro de C/C++ en Foros del Web. Estoy haciendo una aplicación en C++ y glade y necesito que cuando se cliquea el botón cancelar borre los datos ingresados, tengo esto. wndLogin_glade.hh @import ...
  #1 (permalink)  
Antiguo 12/05/2011, 09:18
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 11 años, 8 meses
Puntos: 0
Error con una señal clicked()

Estoy haciendo una aplicación en C++ y glade y necesito que cuando se cliquea el botón cancelar borre los datos ingresados, tengo esto.
wndLogin_glade.hh
Código C++:
Ver original
  1. class wndLogin_glade : public Gtk::Window
  2. {
  3.  
  4.         GlademmData *gmm_data;
  5. public:
  6.         class Gtk::Window * wndLogin;
  7. protected:
  8.    
  9.         class Gtk::Button * btnCancelar;
  10.      
  11.         wndLogin_glade();
  12.  
  13.         ~wndLogin_glade();
  14. private:  
  15.         virtual bool on_btnCancelar_key_press_event(GdkEventKey *ev) = 0;
  16.         virtual void on_btnCancelar_clicked();
  17. };
wndLogin_glade.cc //A donde están las señales
Código C++:
Ver original
  1. /* signals */
  2.    btnCancelar->signal_key_press_event().connect(SigC::slot(*this, &wndLogin_glade::on_btnCancelar_key_press_event), false);
  3.    btnCancelar->signal_clicked().connect(SigC::slot(*this, &wndLogin_glade::on_btnCancelar_clicked));
wndLogin.hh
Código C++:
Ver original
  1. class wndLogin : public wndLogin_glade
  2. {
  3.     private:
  4.         bool on_btnCancelar_key_press_event(GdkEventKey *ev);
  5.         void on_btnCancelar_clicked();
  6.  };

wndLogin.cc
Código C++:
Ver original
  1. bool wndLogin::on_btnCancelar_key_press_event(GdkEventKey *ev)
  2. {
  3.     if (ev->keyval == GDK_Return || ev->keyval == GDK_KP_Enter) {
  4.  
  5.         /* Vuelvo ventana a estado original */
  6.         entUsuario->set_text("");
  7.         entPassword->set_text("");
  8.         entUsuario->grab_focus();
  9.     }
  10.     return 0;
  11. }
  12. void wndLogin::on_btnCancelar_clicked()
  13. {
  14.  
  15.          //Vuelvo ventana a estado original
  16.         entUsuario->set_text("");
  17.         entPassword->set_text("");
  18.         entUsuario->grab_focus();
  19.     return 0;
  20. }
Siempre pongo como ejemplo key_press_envet que esa señal anda bien, al compilar así como está me da.

wndLogin.cc: In member function `virtual void
wndLogin::on_btnCancelar_clicked()':
wndLogin.cc:152: error: return-statement with a value, in function declared
with a void return type
make[1]: *** [wndLogin.lo] Error 1
make[1]: Leaving directory `/root/sirel3/glade/wndLogin'
make: *** [all-recursive] Error 1
  #2 (permalink)  
Antiguo 12/05/2011, 10:25
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 8 años, 7 meses
Puntos: 89
Respuesta: Error con una señal clicked()

En una función void estás haciendo un return, ese es el error que te da

La función quedaría así

wndLogin.cc
Código C++:
Ver original
  1. ...
  2. void wndLogin::on_btnCancelar_clicked()
  3. {
  4.  
  5.          //Vuelvo ventana a estado original
  6.         entUsuario->set_text("");
  7.         entPassword->set_text("");
  8.         entUsuario->grab_focus();
  9. }
  #3 (permalink)  
Antiguo 12/05/2011, 10:50
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Error con una señal clicked()

Cita:
Iniciado por Heimish2000 Ver Mensaje
En una función void estás haciendo un return, ese es el error que te da

La función quedaría así

wndLogin.cc
Código C++:
Ver original
  1. ...
  2. void wndLogin::on_btnCancelar_clicked()
  3. {
  4.  
  5.          //Vuelvo ventana a estado original
  6.         entUsuario->set_text("");
  7.         entPassword->set_text("");
  8.         entUsuario->grab_focus();
  9. }
Gracias por responder.
Si revisé eso lo dejé sin return pero sale el mismo error.
  #4 (permalink)  
Antiguo 13/05/2011, 01:56
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 8 años, 7 meses
Puntos: 89
Respuesta: Error con una señal clicked()

¿Seguro que es el mismo error? ¿No tendrás otra función void con un return?
  #5 (permalink)  
Antiguo 13/05/2011, 05:12
 
Fecha de Ingreso: enero-2008
Mensajes: 53
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Error con una señal clicked()

Lo solucioné ese era una parte del error el return 0 que había quedado la otra es así
wndLogin_glade.hh
Código C++:
Ver original
  1. class wndLogin_glade : public Gtk::Window
  2. {
  3.  
  4.         GlademmData *gmm_data;
  5. public:
  6.         class Gtk::Window * wndLogin;
  7. protected:
  8.    
  9.         class Gtk::Button * btnCancelar;
  10.      
  11.         wndLogin_glade();
  12.  
  13.         ~wndLogin_glade();
  14. private:  
  15.         virtual bool on_btnCancelar_key_press_event(GdkEventKey *ev) = 0;
  16.         virtual void on_btnCancelar_clicked()=0;
  17. };

Faltaba igualar a 0 void on_btnCancelar_clicked() muchas gracias a todos.

Etiquetas: c++, gdk, glade, señales
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 08:56.