lexblas escribió:¿Como manejar los eventos en QT?
los Eventos son Igual a las señales?
eventos como load,keypress, etc
Soy nuevo en esto de Qt y quisiera saber si algun me pudiera ayudar en esto.
Necesito desarrollar un sistema en c++ para presentar y opte por este framework que me parece excelente
Hola, yo acabo de empezar a programar con Qt, y por lo que estube leyendo en el manual en ingles pude averiguar que se puede hacer de dos maneras:
1. MEDIANTE LA INTERFAZ GRAFICA DE QT (yo uso Qt Creator 1.3.1 Basado en Qt 4.6.1 (32 bit))
Cuando tienes abierto un proyecto, y tienes una interfaz grafica (archivo.ui) justo debajo del formulario hay una ventana con dos pestañas, que ponen Action Editor y signals_Slots Editor, Si no encuentras estas pestañas pulsa la tecla F4, con el archivo .ui abierto. Una vez hecho esto, si por ejemplo quieres que al pulsar un boton se borre el contenido de un Edit pulsa en el boton u arrastra hasta el Edit, una vez hecho esto te saldra una ventana con los posibles Signals y Slots, el de la izquierda es el Signal emitido al pulsar el boton y el de la derecha el Slots ( que es una respuesta al signal). Bien, pues para hacer lo que anteriormente dije, seleciona el signal del boton pressed(), y para el edit clear(). Con esto ya tienes el evento creado en modo de edicion.
2. MEDIANTE CODIGO.
Este metodo es mas complicado, pero por lo que he leido es mucho mas configurable, a continuacion te escribo un ejemplo que encontre en un manual, intentare explicarlo lo mejor que pueda (En el ejemplo se quiere que al pulsar un boton, la ventana principal realice una acccion):
Debemos definir la funcion a realizar cuando se marque el signal, esto lo haremos en el archivo de cabecera de la ventana principal:
Q_OBJECT
public:
MainWindowImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
private Slots:
void addClicked();
};
#endif
la funcion es la que esta en negrita.
Ahora tenemos que implementar el slot (addClicked) Queremos que al recibir el
Signal clicked del botón, se lea y añada el contenido del campo de texto a una lista, y se acabe borrando el contenido de este campo de texto, Esto lo hacemos en el archivo fuente de la ventana principal:
void MainWindowImpl::addClicked()
{
//Aqui ira lo que queremos que haga el evento.
}
Finalmente falta conectar el Signal del objeto emisor (Signal clicked del botón) con el Slot del
objeto receptor (Slot addClicked() de la ventana principal). Este último paso lo haremos en la
función constructora de la ventana principal, dentro del archivo fuente de la misma,
añadiendo la siguiente línea:
MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f)
: QMainWindow(parent, f)
{
setupUi(this);
connect(btAdd, SIGNAL(clicked()), this, SLOT(addClicked()));
}
Espero que te sirva de ayuda.
La parte de los signals y slot desde codigo fuente la he extraido del manual: memoriaPFC