sirve - Buena biblioteca de GUI de C++ para Windows
librerias dev c++ pdf (21)
¿Has mirado el kit de herramientas de Fox ?
Estoy buscando una buena biblioteca de GUI de Windows para C ++. Las características ideales en mi opinión deberían ser:
- Moderno . MFC, wxWidgets, Qt se iniciaron hace mucho tiempo y no usan las características modernas de C ++ y la biblioteca estándar.
- Tenga un rico conjunto de controles con características decentes. La capacidad de soltar HTML casi en todas partes es una felicidad por la que me encanta wxWidgets cuando no lo odio.
- Código abierto Es el deber. Si las fuentes están disponibles después de la compra, entonces se considera correcto.
- Tener un diseñador de formularios de alguna manera . Sí, sería genial. Después de años de trabajar con Delphi, lloro cada vez que tengo que especificar los tamaños de control a mano.
- Gratis para uso comercial . Pero si alguna biblioteca es REALMENTE buena, entonces consideraré comprarla.
- Plataforma cruzada Esta especificación es solo un desempate ☺. Puedo vivir sin esto
Por favor sugiere tus ideas para los candidatos. Una biblioteca por respuesta, por favor.
¿Qué hay de winx ?
¿Qué hay de Smartwin++ ?
Su wiki parece estar caído ahora. Muestra Hello World! código de Smartwin ++ documentos
Creo que estás escribiendo Qt demasiado rápido; no usa mucho la biblioteca estándar, pero eso tiene menos que ver con ser obsoleto que con tener prioridades diferentes. Los contenedores QT usan iteradores, algoritmos de plantilla, etc., pero tienen un modelo de iterador diferente; Los iteradores Qt apuntan entre elementos en lugar de a ellos. Esto hace que el recorrido hacia adelante y hacia atrás sea simétrico, y limpia algunas cajas de bordes para insertar y quitar elementos al atravesar, aunque es un poco menos eficiente. Y también proporcionan iteradores estilo STL. Es una opción válida para una biblioteca de GUI IMO; el rendimiento de los contenedores es poco probable que sea el factor crítico.
En cuanto al preprocesador (moc), piénselo más como un compilador IDL que sepa leer encabezados C ++ en lugar de necesitar su propio lenguaje. No preprocesa su código, que se compila directamente. Simplemente genera un archivo cpp adicional que contiene el cálculo de referencias para devoluciones de llamadas de señal / ranura, que puede ser bastante complicado cuando cruzan los límites del hilo y necesitan sincronización.
Qt es gratis si puede liberar sus fuentes (incluso para uso comercial, cuántas herramientas internas realmente necesitan ser propietarias), y no tiene un precio irrazonable si no puede (no hay regalías por unidad o algo particularmente molesto)
Deberías echarle un vistazo a gtkmm . Está escrito en c ++ moderno, usa stl, sigue sus convenciones e incluye soporte para utf-8. Además, es de código abierto, multiplataforma y tiene licencia bajo lgpl. Desde su sitio:
caracteristicas:
- Usa la herencia para derivar widgets personalizados.
- Controladores de señal seguros para tipos, en C ++ estándar.
- Polimorfismo.
- Uso de la biblioteca estándar de C ++, incluidas cadenas, contenedores e iteradores.
- Completa internacionalización con UTF8.
- Gestión completa de la memoria C ++
- Composición de objetos
- Desasignación automática de widgets dinámicamente asignados.
- Uso completo de espacios de nombres C ++.
- Sin macros.
- Multiplataforma: Linux (gcc), FreeBSD (gcc), NetBSD (gcc), Solaris (gcc, Forte), Win32 (gcc, MSVC ++ .Net 2003), MacOS X (gcc), otros
- Software gratuito y sin costo tanto para Open Source como para desarrollo propietario.
- Discutido, diseñado e implementado en público.
Desde que usted nombró a Delphi: ¿Sabe que Borland C ++ Builder también hace VCL como Delphi? Puedes distribuirlo gratis y obtienes el código fuente.
Echa un vistazo a eGUI ++ tiene un bonito modelo de objeto moderno. Puede ver un artículo de MDN Traer la simplicidad de los formularios de Windows a las aplicaciones nativas y puede descargar el código del website de John Torjo
Echaré un vistazo a Qt, no es gratis para uso comercial, pero tienen una buena licencia de nivel de entrada si recién comienzas. Creo que su interfaz es bastante moderna, aunque no me gustó que parezcan depender de las extensiones de lenguaje que preprocesan.
¿Qué estás buscando específicamente en la categoría Moderno?
En un momento, tenía cierto interés por Ultimate++ . Nice License (BSD), un IDE, es compatible con varios compiladores, se utiliza en una serie de aplicaciones complejas del mundo real (¡bastante importante!), Etc.
Nunca tuve tiempo para invertir allí, pero todavía lo veo como una alternativa interesante.
Más vale tarde que nunca, pero puede que encuentres esto interesante . Sus únicos requisitos que satisface son "Código abierto" y "Gratis". Hace algo que no pediste
reduzca su código fuente en un orden de magnitud
le da control total sobre el diseño, el enlace de datos, las matrices variables de controles, etc.
Cuando vea cómo funciona, puede agregar fácilmente sus propios controles.
Por cierto, tiene una desventaja más, es adictivo.
Me pregunto por qué no se mencionó antes: recomendaría CEGUI , que es multiplataforma (incluido Windows) y admite OpenGL y DirectX, lo que le permite integrarlo sin problemas en cualquier juego o aplicación de renderizado / visualización. También parece cumplir con todos sus requisitos a la perfección.
Moderno (utiliza STL , XML para sus archivos de activos, y admite internamente el estándar C99 para una compatibilidad máxima, después de la versión 1.0 usará C ++ 11 en la rama de desarrollo). También tiene soporte para caracteres Unicode y todo tipo de idiomas (como se puede ver en las muestras).
Ofrece los siguientes widgets listos para usar: campos de texto (desplazables), cajas de edición, cajas de edición multilínea, rotuladores, casillas de verificación, botones, botones de radio, ventanas con pestañas, barras de progreso, paneles desplazables, controles deslizantes, menús desplegables (cuadros combinados) , barras de menú, contenedores de diseño (vertical / horizontal) y más
Publicado bajo la licencia Open Source MIT , una de las licencias que le ofrece la mayor libertad, solo necesitará distribuir el archivo de licencia con la aplicación y eso es todo
Los diseños se pueden crear y editar fácilmente usando un editor WYSIWYG escrito en Python. Se llama CEED y también está disponible gratuitamente. Ha pasado por muchas pruebas y es adecuado para ser utilizado para producción. Se ha publicado una versión estable y nuevas características están en desarrollo para el futuro. Un editor de conjunto de imágenes también está disponible en la misma aplicación.
Como se dijo, esto es gratis para uso comercial . La única obligación que tiene es distribuir el archivo de licencia.
CEGUI es apto para uso multiplataforma . Es oficialmente compatible con Windows, Linux, Mac OS . También se ha usado en iOS y Android. Android es compatible con la rama de desarrollo.
Originalmente fue diseñado como una biblioteca GUI para juegos, pero también es perfecto para su uso en aplicaciones científicas, aplicaciones de renderizado, visualización. Las aplicaciones de escritorio se pueden hacer también. Un aspecto simple similar a Windows está disponible en los activos predeterminados.
Ha existido por más de 10 años, tiene una comunidad activa y es una biblioteca robusta, rica en características y extensible.
Nana C ++ Library tiene como objetivo una biblioteca portátil y fácil de usar, proporciona un marco de trabajo e hilos GUI para una fácil programación con los métodos modernos de C ++, tales como rasgos, metaprogramación y otras tecnologías de plantilla.
Un blog para este proyecto: http://sourceforge.net/p/nanapro/blog
Descargue la última versión en http://sourceforge.net/projects/nanapro
Recientemente comencé a buscar una GUI también, y comencé a experimentar con cada una. Hasta donde puedo decir:
- Qt no es solo una biblioteca de GUI, sino también un framework (incluido ECMAScript, SQL, soporte XML y más).
- Qt es una opción sólida, y se puede entender pirateando en aproximadamente media hora.
- lamentablemente, Qt te obliga a usar su modelo de programación, pero puedes evitarlo fácilmente y escribir código en tu estilo.
- Qt es propiedad de Nokia, y si usted es una persona que considera problemas políticos al elegir una biblioteca, Nokia hizo recientemente un trato con Microsoft para usar Windows Phone 7 en sus teléfonos.
- GTK + fue mi elección personal, pero no es nativa en todas las plataformas. Aunque funciona a la misma velocidad que los controles nativos de Windows, a veces más rápido.
- Los puertos de wxWidgets son nativos en todas las plataformas, y es mi segunda referencia personal después de GTK +, ya que no está orientada a los beneficios.
Recomiendo mucho JUCE , es un buen y limpio c ++ moderno que está muy bien documentado con comentarios doxy. Tiene una amplia gama de clases de GUI y es muy simple ampliar las existentes. La biblioteca cubre más que sólo GUI, hay muchos códigos para manipulación y generación de sonido, para enhebrar, leer / escribir formatos de imagen modernos, redes básicas y mucho más. También se ve bien (tiene un tipo de sensación OS X de forma predeterminada) y es multiplataforma.
El inconveniente: aunque es gratuito (en ambos sentidos) para uso no comercial, el uso comercial requiere una licencia comercial que es bastante costosa.
Con todo, definitivamente vale la pena echarle un vistazo, lo he usado para varios proyectos de hobby, uno de los cuales pretendo lanzar en algún momento. En realidad, hace que la codificación GUI en C ++ sea divertida, ¡y eso es decir algo!
Recomiendo usar Qt porque:
- Es multiplataforma y cubre una amplia gama de sistemas operativos (incluido el móvil)
- Es de código abierto y tiene una velocidad rápida para mejorar
- Tiene un buen diseñador de GUI y un IDE muy capaz (Qt Creator)
- El diseño de API es excelente y fácil de usar
- Tiene una gran documentación que es fácil de leer
- Tiene el sistema de traducción Qt que le permite tener una aplicación multilingüe
- El sistema de diseño de GUI donde los widgets cambian de tamaño de acuerdo a un diseño hace que todo sea mucho más fácil
- El QML te da la capacidad de crear una GUI fantástica con excelentes gráficos y animaciones
- Tiene un gran soporte para redes y conectividad (socket, SSL, www, IPC, ...)
- Tiene QTestLib para probar el código
- Tiene muchos enlaces de idiomas si no desea usar C ++
Si está buscando una biblioteca moderna de GUI en C ++, entonces Adam & Eve de Adobe Source Library (ASL) es lo correcto (depende en gran medida de las bibliotecas de Boost ).
Lo que realmente me gusta de él es que el diseño del diseño está completamente desacoplado del código. La definición del diseño puede estar en un archivo externo, de modo que el usuario pueda cambiar el diseño sin volver a compilar el programa.
Un ejemplo del sitio:
layout clipping_path
{
view dialog(name: "Clipping Path")
{
column(child_horizontal: align_fill)
{
popup(name: "Path:", bind: @path, items:
[
{ name: "None", value: empty },
{ name: "Path 1", value: 1 },
{ name: "Path 2", value: 2 }
]);
edit_number(name: "Flatness:", digits: 9, bind: @flatness);
}
button(name: "OK", default: true, bind: @result);
}
}
Que producirá:
Además de esto, el ASL también tiene otras clases útiles de utilidades.
Editar: pero ( yet ) no tiene un diseñador de formularios.
Tanto wx como QT pueden usar la biblioteca estándar. Contienen sus propias clases de colección (al igual que MFC) de la época, no hace muchos años cuando el soporte del compilador para STL era irregular. Algunas adiciones, como las cadenas de copia sobre escritura, aún no están en el STL.
Ambos podrían usar plantillas para algunos de los mecanismos de envío que son hechos por macros (wx) o el precompilador (QT) pero que no ganarían nada excepto un código menos legible.
Tengo que lanzar mi sombrero con Qt. Somos titulares de licencias comerciales de Qt y, aunque son caros, vale cada dólar. La base del código Qt es muy sólida. El diseñador de GUI es una de las mejores herramientas de ese tipo que hay. Hace un tiempo evaluamos un grupo de kits de herramientas GUI disponibles para Windows uno contra el otro y Qt salió adelante en todos los aspectos, así que he visto algunos de estos otros kits de herramientas.
Si quieres balas aquí son mías ...
Orientada a objetos, Qt tiene una arquitectura OO muy agradable que es muy consistente en toda la jerarquía de clases
Las señales y las ranuras le dan una buena manera de manejar el problema de devolución de llamada siempre presente al desarrollar UI
Si bien es un poco demasiado complicado, te lleva a una arquitectura MVC de mostrar datos, lo cual no es malo
Además del gran conjunto de clases de UI, hay un conjunto casi mayor de otras clases que admiten operaciones de base de datos, enhebrado, creación de redes y otras tareas.
Sí Qt internamente utiliza contenedores no STL y cadenas no STL. Pero no permita que ese sea su criterio para descalificar QT. Todos los contenedores QT tienen iteradores similares a STL, y la clase String tiene muchas funciones. Por último, pero no menos importante, tiene un buen soporte multiplataforma.
WTL es un marco de GUI moderno creado por Nenad Stefanovic del equipo de ATL. Es liviano pero aún admite todas las características modernas del sistema operativo.
Biblioteca de plantillas de Windows
Windows Template Library (WTL) es una biblioteca C ++ para desarrollar aplicaciones de Windows y componentes de interfaz de usuario. Extiende ATL (Active Template Library) y proporciona un conjunto de clases para controles, diálogos, ventanas de marco, objetos GDI y más.
La documentación no oficial vive en Code Project .
Yo voto por WTL. Ligero y nativo. No se puede vencer esos dos criterios desde mi perspectiva. Escribo mi capa de modelo en stl c ++ y uso las bibliotecas nativas por sistema operativo. Esto garantiza que sus aplicaciones no se vean como un asno y le permite hacer uso de la más amplia gama de funciones en cada sistema operativo.
Para un diseñador de GUI de WTL recomiendo el excelente, pero por alguna razón totalmente desconocida para la mayoría de WTLBuilder: www.wtlbuilder.com.
wxWidgets: gratuito, permitido para aplicaciones comerciales con muchos diseñadores disponibles ( http://wxdsgn.sourceforge.net/ , http://www.dialogblocks.com/ , http://wxformbuilder.org/ , http://wxglade.sourceforge.net/ ...).
Personalmente escribo muchos de mis widgets desde cero, pero esta no es una opción siempre.