¿Qué se debe buscar al elegir una biblioteca GUI C ++ multiplataforma?

8

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?

BenjaminB
fuente
También, para referencia: stackoverflow.com/questions/4172398/…
Vitor Py

Respuestas:

6

Qt: es muy sencillo,

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

tiene una muy buena documentación

Qt y WX proporcionan documentos bastante buenos, tanto de referencia como tutoriales

y proporciona muchas herramientas,

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.

pero parece duplicar mucho de la biblioteca estándar.

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

¿Cómo determino cuál sería mejor dado un problema particular? "

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

Martin Beckett
fuente
La duplicación de la biblioteca estándar ocurre mucho, incluidos wxWidgets, aunque IIRC ahora tiene opciones para cambiar a usar la biblioteca estándar. Microsoft no se tomó en serio el estándar hasta probablemente la versión 2003 de Visual Studio, entre otros problemas.
Steve314
¡No piense que fue completamente correcto hasta VS2008! Han pasado algunos años desde que usé wx, pero en Qt las clases de colección ahora son completamente intercambiables para stl. Ambos todavía usan su propia clase de cadena, pero dado lo pobre que es std :: string, ¡puedes perdonar eso!
Martin Beckett
Dudo que sea completamente correcto incluso ahora: la perfección es un poco mucho para pedir. VC ++ 2003 me pareció sobre todo bien, aunque con algunos desagradables. Tal vez es una perspectiva (cualquier cosa es mejor que Visual C ++ 6).
Steve314
@ Steve314: mejoró mucho en vc2008 y ahora vc2010. Parece que al contratar el tartamudeo, el equipo de C ++ de msft pasó de "funciona para nosotros" y "agrega una función al lenguaje para arreglar esta aplicación" para tratar de ser el mejor compilador de C ++.
Martin Beckett
4

¿Todas las bibliotecas GUI de C ++ son así?

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.

¿Qué debería estar buscando en una biblioteca GUI?

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.

¿Cómo determino cuál sería mejor dado un problema particular?

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.

¿Debería centrarme en una biblioteca específica, o vale la pena conocer varias de ellas, ya que podrían tener diferentes propósitos?

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
+1 "hacer el trabajo". Podría pasar toda una vida investigando la mejor biblioteca GUI posible para su proyecto en particular, y al final probablemente solo elegiría uno marginalmente mejor (si es que lo hace) de lo que elegiría de un examen bastante superficial de los pocos más populares. Personalmente, conozco suficientes wxWidgets que es poco probable que me moleste en investigar cualquier otra cosa, siempre y cuando pueda controlar qué GUI estoy usando: QT o GTK probablemente puedan tratarse de la misma manera, suponiendo que usarlos en Windows no sea un gran problema. acuerdo. En todo caso, tengo curiosidad sobre la ligera biblioteca FLTK.
Steve314
2

¿Cómo determino cuál sería mejor dado un problema particular?

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.

Bob Murphy
fuente
¿No es posible configurar el aspecto de una vez por todas con wxWidgets o Qt?
BenjaminB
Recuerdo que wxWidgets es un contenedor alrededor del sistema de interfaz de usuario nativo de la plataforma, así que no lo creo. No estoy seguro acerca de Qt. Solían emular la apariencia del widget nativo, por lo que podría cambiarlo a emular una plataforma diferente. Pero no estoy seguro de lo que están haciendo ahora. De todos modos, mi experiencia es principalmente con el desarrollo para uso comercial por clientes no técnicos, donde una apariencia no nativa es algo malo. Por ejemplo, cada vez que enciendo el git gui basado en Tk, lo encuentro un poco discordante porque no importa en qué plataforma me encuentre, se ve mal.
Bob Murphy
Tanto wx como qt usan widgets nativos o dibujan widgets de aspecto nativo si no existen, ambos admiten temas, por lo que se ven nativos.
Martin Beckett
2

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.

Thorsten Müller
fuente
La licencia ha cambiado. Siempre que no modifique la fuente de Qt, puede usarla de forma gratuita incluso en aplicaciones comerciales de fuente cerrada.
Raphael
1

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?

Mattnz
fuente
No soy responsable de nada más que de mí mismo. ¡Entonces es solo para mis proyectos personales y mi currículum!
BenjaminB