Estoy generalizando sobre un par de bibliotecas GUI, pero a un nivel muy alto, el concepto más importante que debe comprender es que una GUI está impulsada por eventos .
En una aplicación de consola, su entrada de usuario generalmente ocurre en ciertos puntos que usted definió. Usted solicita a su usuario, espera su entrada, calcula algo basado en esa entrada. Una de las principales diferencias es que la entrada ocurre solo en un lugar, está leyendo el texto desde la línea de comandos ( stdin
en C ++).
En una aplicación GUI, generalmente tiene varios lugares donde puede ocurrir la entrada, por ejemplo, botones que realizan diferentes acciones o campos de texto. Aquí es donde los eventos entran en juego. Por ejemplo, hacer clic en un botón desencadena un evento. Este evento debe ser manejado por un controlador de eventos , que generalmente es solo un método que toma un objeto de evento y se llama cuando se activa dicho evento . ¿Cómo sabe su botón sobre el controlador de eventos? Sueles suscribirte (o escuchar ).
Aquí hay un ejemplo "inspirado en C ++", este no es el código QT o C ++ real.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Cuando crea el botón, registra una instancia de la clase MyClickHandler contra el botón.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Ahora cada vez que el botón b
se hace clic en , aparece un cuadro de mensaje que dice "Se ha hecho clic en el botón Guardar".
Puede imaginar que una aplicación GUI tiene dos etapas:
- Establezca la GUI: un breve período en el inicio, donde todos los objetos se crean y se conectan entre sí.
- El bucle de eventos : su GUI está en un gran bucle while y solo está inactivo hasta que se desencadena un evento.
Este es un ejemplo muy simple, pero recomendaría con cualquier marco que elija que intente mostrar un cuadro de mensaje cuando se hace clic en un botón.
Para el marco, hay muchos de ellos: en el caso de C ++, probablemente recomendaría Qt.
Un último consejo: manténgase alejado de los diseñadores de GUI hasta que realmente sepa lo que está sucediendo en segundo plano. No es tan difícil escribir algunos ejemplos simples y comprender el bucle de eventos primero y luego pasar a diseños más complejos.