¿Alguien puede explicar cómo funciona una GUI y cuándo debo comenzar a usarla? [cerrado]

16

He estado aprendiendo C ++ durante aproximadamente un mes, y antes de continuar, me gustaría aclarar esta tediosa pregunta que sigo teniendo. Sé lo que es una GUI, pero realmente no sé cómo funciona, y tal vez ejemplos de los populares.

Aunque sé que la programación de la línea de comandos es lo fundamental, creo que sería divertido jugar con una GUI.

Aunque tengo alrededor de 3 millones de otras preguntas, las guardaré: D

David
fuente
1
última línea me hizo sonreír :) 1 para que
Chipre

Respuestas:

28

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 ( stdinen 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.

sebastiangeiger
fuente
Si agrega un punto y coma al final de la definición de clase y hace pública la herencia, sería una sintaxis C ++ adecuada / posible.
Lstor
1
Hecho. Pero no quería plantear falsas expectativas, ya que el código no será ejecutable después de todo. La mayor parte de mi experiencia es en Swing, que probablemente se refleja en los nombres de las clases. Los mismos conceptos se llamarán de manera diferente en diferentes marcos.
sebastiangeiger
1
+1 Esta parece ser la única respuesta que responde la pregunta (para mí parece que no está preguntando solo sobre marcos, está preguntando sobre conceptos generales)
Federico klez Culloca
1
Ewwww .... horrible oyente mierda.
DeadMG
7

Ahora es un momento tan bueno como siempre para aprender la programación de GUI. Como sabes C ++, recomendaría mirar QT. Gran documentación, gran base de usuarios y muchos ejemplos / tutoriales disponibles para aprender.

Mattnz
fuente
1
+1 para Qt - @David - Qt tiene su propio entorno de desarrollo llamado Qt Creator, que es autónomo, gratuito y relativamente simple en comparación con otros. Qt es potente, intuitivo, extenso, muy bien documentado y con una base de usuarios grande y activa. Es fácil comenzar y hay muchos ejemplos para comenzar a jugar y hacer lo suyo, lo cual es una excelente manera de aprender. Se puede descargar aquí
Roger Attrill
Estoy inclinado a rechazar esto. QT fomenta muchas prácticas realmente malas en C ++ si no sabe qué buscar. - Lo que no haces, después de solo un mes de C ++. Además, toca algunos aspectos complejos en C ++. Si es posible, primero comenzaría la programación GUI en un idioma diferente y me concentraría en hacer que C ++ sea correcto.
Konrad Rudolph el
3

También puede comenzar con Microsoft Visual Studio C ++ Express . El IDE es muy amigable y fácil de usar (¡y gratis!), Y podrá crear sus primeras aplicaciones GUI muy rápidamente ... Lo que lo ayudará a concentrarse en comprender los conceptos básicos de la programación basada en eventos , un enfoque diferente que necesitarás dominar.

También puede comenzar directamente con la creación de aplicaciones impulsadas por WPF, pero comenzaría con Windows Forms al principio, esa es una tecnología menos para comprender ya que es solo C ++ básico con la API de Windows Forms de Microsoft.

Jalayn
fuente
1
En VC ++ Express puede escribir GUI con: 1. Win32 API que es muy antigua, engorrosa y simplemente ridícula 2. MFC que es un montón de basura 3. WTL que es mejor pero no multiplataforma. 4. C ++ / CLI, que es impopular, mal soportado (incluso sin inteligencia) y demasiado complicado. Qt es más fácil, multiplataforma, tiene un buen diseñador de GUI y tiene una gran cantidad de clases útiles que no son GUI, lo cual es muy importante en C ++ con su pequeña biblioteca estándar.
Anton Barkovsky
0

Quizás más adecuado para StackOverflow, etiquetado c ++; pero de todos modos.

Mira algunos de estos en google; Qt, WxWidgets, TheForgers 'WinApi, Fltk ...

Las GUI no son tan difíciles de usar, especialmente una vez que ya conoces c ++. Ve con WxWidgets, creo; Qt es demasiado complejo para un mes de aprendizaje. Puedes recoger Wx en un par de horas.

Seb Holzapfel
fuente
-1

A los usuarios no les gustan las cosas complicadas. La consola es algo complicado, es por eso que debes crear aplicaciones GUI que sean más amigables y fáciles de entender. Esta es la razón más obvia que veo. Puedes mirar gtk o Qt: esos dos son los más populares.

Sergey
fuente
2
La CLI no es complicada y las GUI por definición son MÁS complicadas para el usuario. Son más accesibles, no menos complicados.
Ominus