studio - ¿Cómo construyo una interfaz gráfica de usuario en C++?
interfaz grafica en dev c++ (9)
Todos mis programas de C ++ hasta ahora han estado usando la interfaz de línea de comandos y el único otro idioma con el que tengo experiencia es PHP, que no lo admite.
¿Dónde comienzo con la programación de la interfaz gráfica de usuario en C ++? ¿Cómo creo uno?
Algoritmo independiente del sistema operativo " Crear aplicaciones GUI en C ++ en tres pasos ":
Instalar Qt Creator
Crear nuevo proyecto (Aplicación Qt Widgets)
Constrúyelo.
Enhorabuena, tienes tu primer GUI en C ++.
Ahora está listo para leer una gran cantidad de documentation para crear algo más complicado que la aplicación GUI "Hello world".
Como ya he estado donde estás ahora, creo que puedo "responderte".
El hecho es que no hay una manera fácil de hacer una GUI. Las GUI dependen en gran medida de la plataforma y del código específico del sistema operativo, es por eso que debe comenzar a leer su plataforma / sistema operativo objetivo en las API de administración de ventanas. Lo bueno es que hay muchas bibliotecas que abordan estas limitaciones y resumen las diferencias de arquitectura en una única API multiplataforma. Los sugeridos anteriormente, GTK y QT, son algunas de estas bibliotecas.
Pero incluso estos son un poco demasiado complicados, ya que se introducen muchos conceptos nuevos, tipos de datos, espacios de nombres y clases, todo al mismo tiempo. Por esta razón, suelen venir empaquetados con algún editor GUI WYSIWYG. Ellos prácticamente hacen posible el software de programación con GUIs.
Para resumir, también hay "entornos" no libres para el desarrollo de GUI como Visual Studio de Microsoft. Para aquellos con antecedentes de experiencia en Delphi, Visual Studio puede ser más familiar. También hay alternativas gratuitas al entorno completo de Visual Studio suministrado por Microsoft: Visual Studio Express , que es más que suficiente para comenzar el desarrollo de GUI.
Dado el comentario de "diga Windows XP como ejemplo", entonces sus opciones son:
Interactúe directamente con el sistema operativo a través de su API, que para Microsoft Windows es una sorpresa sorpresa, llame a la API de Windows . La referencia definitiva para WinAPI es el sitio web de MSDN de Microsoft. Un popular tutorial para principiantes en línea es el Tutorial de programación de la API Win32 de Forger . El libro clásico para eso es la programación de Windows de Charles Petzold , 5ª edición .
Use una biblioteca específica de plataforma (tanto en términos de SO como de compilador) como MFC , que envuelve la WinAPI en la clase C ++. La referencia para eso es nuevamente MSDN. Un libro clásico para eso es Programación de Windows de Jeff Prosise con MFC, 2ª edición . Si está utilizando, diga CodeGear C ++ Builder, entonces la opción aquí es VCL .
Utilice una biblioteca multiplataforma como GTK+ (C ++ wrapper: gtkmm ), Qt , wxWidgets o FLTK que envuelven la API del sistema operativo específico. Las ventajas con estos son que, en general, su programa podría haber sido compilado para diferentes sistemas operativos sin tener que cambiar los códigos fuente. Como ya se ha mencionado, cada uno tiene sus propias fortalezas y debilidades. Una consideración al seleccionar cuál usar es su licencia. Para los ejemplos dados, GTK + & gtkmm es una licencia bajo LGPL, Qt está bajo varias licencias, incluida la opción propietaria, wxWidgets está bajo su propia Licencia wxWindows (con un nuevo nombre de Licencia de wxWidgets), y FLTK está bajo LGPL con excepción. Para obtener referencias, tutoriales y libros, consulte el sitio web de cada uno para obtener detalles.
Encontré un sitio web con un tutorial "simple": http://www.winprog.org/tutorial/start.html
Es fácil crear una GUI de Windows .NET en C ++.
Vea el siguiente tutorial de MSDN . Puedes descargar todo lo que necesites (Visual C ++ Express) de forma gratuita .
Por supuesto, te vinculas con .NET, pero si solo estás jugando o solo necesitas una aplicación de Windows, estarás bien (la mayoría de las personas todavía tienen Windows ... por ahora).
Hay un montón de bibliotecas GUI portátiles gratuitas , cada una con sus propias fortalezas y debilidades:
Especialmente Qt tiene buenos tutoriales y herramientas que te ayudan a comenzar. ¡Disfrutar!
Sin embargo, tenga en cuenta que debe evitar la funcionalidad específica de la plataforma , como la API de Win32 o MFC. Eso lo vincula innecesariamente con una plataforma específica casi sin beneficios.
Qt es el mejor.
Yo uso FLTK porque QT no es gratis. No elijo wxWidgets porque mi primera prueba con un programa simple hello world produce un ejecutable de 24Mb, fltk 0.8MB ...
Esencialmente, el sistema de ventanas de un sistema operativo expone algunas llamadas a la API que puede realizar para realizar trabajos como crear una ventana o poner un botón en la ventana. Básicamente, obtiene un conjunto de archivos de encabezado y puede llamar a funciones en esas bibliotecas importadas, como haría con stdlib e printf
.
Cada sistema operativo viene con su propio kit de herramientas GUI, conjunto de archivos de encabezado y llamadas a la API, y su propia forma de hacer las cosas. También hay kits de herramientas multiplataforma como los widgets gtk, qt y wx que te ayudan a construir programas que funcionan en cualquier lugar. Logran esto al tener las mismas llamadas de API en cada plataforma, pero una implementación diferente para aquellas funciones de API que llaman a las llamadas de API del OS nativo.
Una cosa que todos tendrán en común, que será diferente de un programa CLI, es algo que se llama un bucle de eventos. La idea básica allí es algo complicada y difícil de comprimir, pero en esencia significa que no hay mucho de eso en su clase principal / función principal, excepto:
- revisa la cola de eventos si hay nuevos eventos
- Si existe, despacha esos eventos a los manejadores apropiados.
- cuando haya terminado, devuelva el control al sistema operativo (generalmente con algún tipo de llamada de función especial "dormir" o "seleccionar" o "producir")
- luego, la función de rendimiento volverá cuando el sistema operativo esté terminado, y tendrá otra vuelta alrededor del bucle.
Hay muchos recursos sobre la programación basada en eventos. Si tiene alguna experiencia con javascript, es la misma idea básica, excepto que usted, el creador de secuencias de comandos no tiene acceso ni control sobre el propio bucle de eventos, o qué eventos hay, su único trabajo es escribir y registrar controladores.
Debe tener en cuenta que la programación de GUI es increíblemente complicada y difícil, en general. Si tiene la opción, en realidad es mucho más fácil simplemente integrar un servidor web incorporado en su programa y tener una interfaz basada en html / web. La única excepción que he encontrado es el tutorial + constructor de interfaz cocoa + xcode + de Apple que lo convierten en el entorno más accesible para las personas nuevas en la programación GUI que he visto.