c++ - ¿Usas Qt y por qué lo usas?
qt-jambi (8)
En C ++, sus únicas otras alternativas son MFC y wxWidgets. QT / wxWidgets es en gran medida una preferencia personal. Creo que QT es un diseño limpio con buena documentación.
QT cuesta aproximadamente un mes de salario de desarrollador si no lo está usando para GPL.
Pros. y contras? ¿cuánto tiempo lo usas? ¿Qué hay de jambi?
Estos son algunos de mis pros y contras con Qt:
Pros:
Multiplataforma
Sé que este siempre se usa, pero después de ir y venir entre Windows y Linux con Qt, es increíble lo poco que tengo que hacer para ponerme en funcionamiento. Creo que esto se debe al hecho de que solo uso Vim con Qt Designer.
QMake
Este es uno de mis aspectos favoritos de Qt. Después de trabajar en wxWidgets, FLTK, etc., me cansé tanto de jugar con diferentes sistemas de compilación y no quiero crear manualmente mis archivos make. Actualmente uso CMake en cualquier cosa que no sea Qt en este momento, pero creo que estoy moviendo lentamente incluso Qt a CMake. Sin embargo, es tan fácil comenzar con QMake.
QTestLib
Miré algunos otros frameworks de pruebas de unidades de C ++ y cuando creé mis pruebas usando QTestLib, me sentí muy similar a NUnit (C #) y en cuestión de minutos tuve varias pruebas de aprobación. También noté que sería muy fácil crear mi propio entorno de integración continua .
Más cercano a Java y .Net en productividad
Lo más importante que escucho / leo sobre C ++ es: "Puedo ser más productivo con Java o .Net". Por experiencia personal puedo obtener un prototipo de una aplicación que se ejecuta en Qt usando Vim y Qt Designer, antes de que Eclipse o Visual Studio incluso se carguen. También obtengo un conjunto muy similar de bibliotecas en Qt que tengo en .Net o Java, y si no está allí, puedo aprovechar el código C ++ existente.
Contras :
Precio
Este es el mayor factor que puedo pensar en este momento. Sin embargo, el costo vale cada centavo, um si supiera cuántos centavos tenía que ahorrar sin llamar a un representante de ventas. Compré una licencia el día en que tenían su descuento para pequeñas empresas y valió la pena, habría pagado tres veces más y creo que ese es el precio actual.
Desarrollar en cualquier lugar con licencia comercial
Me encantaría poder desarrollar en cualquier plataforma, pero construir y vender para otra plataforma. Por ejemplo, desarrolle en Linux, luego cree e implemente en Windows si solo tiene la licencia comercial de Windows. Por lo que sé, solo puedes desarrollar y crear una aplicación comercial en la plataforma para la que tienes una licencia.
Dependencia de un proveedor
Bueno, más o menos, esto es más una estafa personal. No me gusta estar vinculado a un proveedor específico porque la dirección de la empresa y la dirección del producto me hacen un seguimiento lateral. TrollTech fue comprado por Nokia, es bueno o malo, no lo sé, pero una empresa de ese tamaño puede hacer cosas malas.
Creo que he terminado por ahora :). Oh, no he usado Jambi pero estoy realmente interesado en hacer un par de prototipos de proyectos para descubrir cuán fácil es usar un complemento desarrollado en C ++ con Jambi. Especialmente usando Jambi como una interfaz web con plugins C ++.
Para ser honesto, no he leído mucho al respecto, por lo que puede ser imposible o muy fácil.
He estado usando Qt desde hace varios años para el desarrollo comercial y he estado muy contento con él.
Una de las cosas buenas de Qt es que proporciona un gran conjunto de bibliotecas, así como las funciones de la GUI (por ejemplo, análisis XML, hilos, redes), todo en un estilo consistente y multiplataforma. Esto significa que rara vez necesitamos usar otras bibliotecas, aunque usamos el boost para algunas cosas.
Otro factor muy importante para nosotros fue la internacionalización. En una aplicación anterior basada en MFC, tuvimos que mantener 2 versiones localizadas para los dos idiomas que admitimos. En nuestra aplicación basada en Qt solo tenemos una versión.
- El sistema de traducción de Qt, mediante el uso de un lingüista, es fácil de usar y facilita el soporte de múltiples idiomas (¡por supuesto, todavía tiene que traducir las cadenas, lo cual es mucho trabajo!)
- El sistema de diseño de GUI donde los widgets cambian de tamaño de acuerdo con un diseño hace que todo sea mucho más fácil. En diferentes idiomas, la longitud de las cadenas es diferente. Con widgets de tamaño fijo (como MFC), cada cuadro de diálogo debe ajustarse para cada idioma, de lo contrario, se cortan partes de las etiquetas. Con Qt cambian de tamaño ellos mismos. Por supuesto, hay casos en que no funciona exactamente bien, pero aún hace que todo sea mucho más fácil.
- QString hace todo en Unicode y maneja las conversiones de diferentes códecs muy fácilmente.
Una cosa que ha sido muy valiosa es el acceso a la fuente, aunque esto ciertamente no es exclusivo de Qt. En varias ocasiones, la capacidad de verificar la fuente de Qt ha explicado algún comportamiento extraño o ha dado una pista de cómo lograr algo.
Hemos encontrado algunos errores en Qt, algunos de los cuales se han solucionado después de informar a Trolltech. En otros casos, han sugerido una solución alternativa. Todos estos han sido bastante oscuros y no han tenido un gran impacto en nuestro desarrollo.
Una de las principales desventajas de Qt sería la falta de bibliotecas de terceros para su uso en aplicaciones comerciales. Sin embargo, Qt es bastante completo, por lo que para nosotros no ha sido un gran problema, aunque eso dependerá del tipo de aplicación que esté desarrollando.
No he usado Jambi tampoco.
He estado usando Qt durante más de dos años.
Las cosas que me gustan de Qt son:
- Fácil programación de GUI (en comparación con MFC), Qt Designer
- Niza clases de contenedores
- Bonito marco de escena de gráficos
- Excelente documentación con ejemplos útiles
- Soporte de traducción
- Buen soporte técnico
Recomiendo encarecidamente los Qt Developer Days . Si tienes la oportunidad de participar, ¡hazlo! Muchas conversaciones agradables y muy interesantes allí.
No lo use, sin embargo ...
Pro: QT tiene un diseño de 3 fases opcional, mientras que WX solo permite 2 actualmente (creo que planean hacer 3 fases, pero aún no lo han trabajado).
Uno de los problemas más grandes con el uso de diseños es texto estático y envoltura. WX le pregunta qué tan grande es su ancho / alto mínimo y porciones de la pantalla, QT tiene la opción de decir qué tan ancho desea, qué tan alto necesita estar si su ancho de X. Esto le permite expresar el flujo de una página mucho mejor.
Qt es una biblioteca muy agradable, pero tiene una costosa licencia de desarrollador por puesto, por lo que no siempre es útil para todos los proyectos.
Usé Qt en un trabajo anterior. Solo tuve el más breve contacto con Qt varios años antes de eso, así que era casi un Qt newb.
Cuando comencé, me dijeron que eligiera mi idioma y mi entorno, pero era deseable el soporte multiplataforma. Intenté Qt y Java, e incluso le di a C # una oportunidad solo por el gusto de hacerlo. Me di dos días para evaluar cada opción.
Tal vez estaba un poco parcializado con mi historial como desarrollador de C ++, pero después de dedicarle tiempo a cada opción, Qt fue el único que mostró algún indicio de ser útil sin una larga curva de aprendizaje.
La documentación provista con Qt y las aplicaciones de ejemplo hicieron que a un desarrollador experimentado le resultara muy fácil, pero el principiante de Qt se puso en funcionamiento muy rápidamente. Al final de mi período de prueba, tuve un prototipo / maqueta de UI de la aplicación final. Con Java / Eclipse, Java / SunStudio y C # / VS.net tuve problemas para lograr que algo no trivial sucediera en ese momento.
A las señales / slots les costó un poco acostumbrarse, pero no fue tan malo, y escribí algunas envolturas simples para afirmar cuando las conexiones no pudieron evitar que los errores tipográficos detuvieran la aplicación. de trabajo
La otra cosa que me gustó es que Qt tenía casi todo lo que necesitaba. Usted lo nombra: almacenamiento, redes, GUI, subprocesos, contenedores. Qt tiene una clase para manejarlo. Lo que en mi humilde opinión es importante porque mezclar bibliotecas a veces puede causar problemas.
Tener el código fuente de Qt fue una gran ventaja, uno solo por el simple interés, pero también me permitió compilar Qt utilizando el compilador y la configuración de mi elección, incluida una versión de depuración para usar durante el desarrollo.
También encontré el apoyo de Trolltech para ser bastante bueno. Crucé un par de errores en Qt, uno de los cuales fue corregido y publicado mientras todavía estaba trabajando en el proyecto (solo un trabajo de 6 meses).
Lo único negativo que recuerdo es la dificultad para depurar objetos Qt (usando VS): hay un complemento Qt para VS que puede examinar objetos Qt, pero yo estaba usando la versión gratuita de VS y los complementos no funcionan para él. Pero eso no fue culpa de Qt.
No he usado jambi así que no puedo comentar.
Utilicé Qt en un par de proyectos que hice en C ++ en varias plataformas durante un período de siete años. Creo que funciona bastante bien y, definitivamente, fue más rápido para mí desarrollar una aplicación GUI decente en Mac que incursionar en un lenguaje que no conocía (Objective-C) en ese momento.
Creo que el mecanismo de señal / ranura es un poco raro, pero no es horrible. Una vez que lo usas por un tiempo, no es un show stopper. La conexión es fácil de superar (o al menos lo fue) y siempre es bueno verificar el retorno de los mismos, ya que su aplicación se pondrá en marcha alegremente y no le dirá que no funcionó.
Nunca he usado jambi.