Como programador de aprendizaje de C ++, estoy tratando de seleccionar un marco o biblioteca GUI para mis propios proyectos.
Tengo cierta experiencia con Qt: es muy sencillo, tiene una muy buena documentación y proporciona muchas herramientas, pero parece duplicar gran parte de la biblioteca estándar.
¿Todas las bibliotecas GUI de C ++ son así? ¿Qué debería estar buscando en una biblioteca GUI? ¿Cómo determino cuál sería mejor dado un problema particular? ¿Debería centrarme en una biblioteca específica, o vale la pena conocer varias de ellas, ya que podrían tener diferentes propósitos?
c++
gui
cross-platform
BenjaminB
fuente
fuente
Respuestas:
No es algo que sea generalmente cierto para las gui libs, pero el mecanismo de señal / ranura de Qt es una solución bastante buena
Qt y WX proporcionan documentos bastante buenos, tanto de referencia como tutoriales
Qt necesita herramientas, otras librerías no requieren nada más que el compilador regular, especialmente aquellas que usan diseños de tipo sizer ni siquiera necesitan un editor de interfaz gráfica de usuario.
Esto es común simplemente porque hace solo un par de años no se podía confiar en que std lib y STL estuvieran presentes o fueran funcionales en todas las plataformas. Incluso hoy esto siempre es cierto en las plataformas móviles. A menudo, aunque no TIENES que usar sus clases de colección, o descubres que son compatibles con los stl
Por lo general, necesita una interfaz gráfica de usuario para solucionar problemas de tipo de aplicación grande de escritorio estándar o una interfaz web / móvil altamente configurable. A menudo, la interfaz gráfica de usuario tiene un sabor para ambos, como Qt y QWT
fuente
No intentes envolver todo en un descriptor. Siempre habrá bibliotecas que estén mal o incluso indocumentadas. Podrían reinventar la rueda el 90% del tiempo o proporcionar alguna nueva funcionalidad innovadora.
Debe buscar una biblioteca que resuelva sus necesidades de la manera más eficiente posible. Por eficiente me refiero a una combinación de código inteligente y rendimiento. Obviamente, si la biblioteca parece una reminiscencia de Perl ofuscado, no querrá usarla para el código de producción, incluso si proporciona una ejecución extremadamente rápida. Por el contrario, no desea algo extremadamente detallado pero con una velocidad de ejecución obstaculizada.
No siempre existe una forma definitiva para determinar cuál es la mejor X para hacer Y . Si puede encontrar algún tipo de información no sesgada con respecto a su problema y las soluciones ofrecidas por las bibliotecas, es una forma. El conocimiento y la experiencia también se encuentran entre las mejores formas de determinar cómo una solución se adaptará a sus necesidades.
Eso depende únicamente de lo que haces y cuáles son tus necesidades. Si necesita trabajar en X, entonces necesitará aprender la mejor biblioteca para ello. Si solo está trabajando en una cosa y tiene una biblioteca que se adapta a sus necesidades, ¿por qué molestarse? *
* Nota: Nunca está de más saber más, solo digo desde el punto de vista puramente de "hacer el trabajo".
fuente
Después de haber realizado docenas de puertos GUI y aplicaciones GUI multiplataforma desde 1989, he descubierto que la primera pregunta que siempre debe decidir es la apariencia . Las bibliotecas GUI multiplataforma se ejecutan a lo largo de un espectro de esa manera.
Apariencia similar en todas partes
Funcionan mejor si su software está dirigido a personas que tienen que cambiar de plataforma con frecuencia y desean que su software se comporte de manera idéntica en todas partes. Esto es común en algunas aplicaciones científicas, donde puede ser una persona de Linux que visita un laboratorio de Mac, o alguien le da una tonelada de Windows boxen como parte de una subvención.
Ejemplos de tales bibliotecas serían Tk y GTK +.
Plataforma de apariencia nativa en todas partes
Estos son mucho mejores para aplicaciones comerciales y usuarios no técnicos, porque esas personas están mucho más interesadas en una interfaz de usuario familiar. De hecho, es probable que se nieguen a usar software que no tenga una apariencia nativa.
Ejemplos de tales bibliotecas serían wxWidgets, RealBasic, Cocotron y Qt.
Una vez que tome esa decisión, puede comenzar a mirar su dominio problemático con más detalle y determinar qué kit de herramientas en particular será el más adecuado.
fuente
Debajo de los aspectos técnicos, debe echar un vistazo de cerca a las licencias. Qt solo es gratuito para el desarrollo de código abierto no comercial. Si comienza a usarlo en otras áreas, como el trabajo por contrato, debe asegurarse de que usted y su cliente o compañía puedan usarlo y que los costos sean aceptables para todas las partes involucradas.
editar: Como dice Raphael, estoy equivocado acerca de la licencia de Qt. Aún así, creo que es una parte importante del proceso de decisión para una biblioteca GUI que alguien quiera usar, para asegurarse de que pueda hacerlo de manera legal.
fuente
Aparte del tecnicismo de la elección, otro punto es la disponibilidad de desarrolladores con conocimiento de la herramienta elegida, durante la vida útil del producto. Esto debería ser un impulsor principal en la elección de todas las herramientas de desarrollo en el mundo comercial. Si es solo para usted, haga lo que quiera, sin embargo, si no, quédese con una herramienta que los desarrolladores conozcan, quieran saber y sean conocidas. Es mucho más fácil contratar a un contratista o empleado para una aplicación Java / Swing o C ++ / QT que una aplicación ADA / (complete su kit de herramientas GUI inaudito aquí).
¿Es el juego de herramientas que eliges "avance profesional" para ti y para todos los demás, o sería una responsabilidad en un currículum?
fuente