2009-02-25 32 views
19

Estoy escribiendo un programa de análisis de datos bastante grande y complejo y he llegado al punto en el que creo que es hora de construir una GUI para el programa. Así que mi pregunta es:Gui toolkits, ¿qué debo usar?

¿Qué conjunto de herramientas GUI debo usar?

estoy completamente nuevo para interfaces gráficas de usuario de codificación y de construcción y agradecería cualquier orientación que se puede ofrecer. No tiene que ser el juego de herramientas más simple del mundo, aprendo bastante rápido. Sin embargo, necesita ser capaz de hacer las siguientes cosas (algunas, si no todas, son probablemente increíblemente básicas para cualquier conjunto de herramientas dado, pero pensé que sería bueno lanzar todo esto por si acaso).

Tiene que permitirme dibujar directamente en la pantalla para poder poner gráficas (espectros realmente), trazados y cosas parecidas para que el usuario las vea. Necesito poder recopilar información de posición sobre dónde hicieron clic en los espectros antes mencionados. Necesito poder mostrar texto y tomar la entrada de texto del usuario. Necesita poder generar menús (usted sabe Archivo, Edición, etc.). Si tuviera algún widget incorporado para generar tablas que fuera útil (aunque puedo superar la falta de eso si puedo dibujar directamente en la pantalla). Tiene que ser capaz de mostrar advertencias, cuadros de diálogo, guardar y abrir cuadros, etc. Eso es más o menos, la mayoría de estos parecen bastante básicos cuando los escribo, pero no quiero que la GUI esté parcialmente codificada y luego me doy cuenta de que necesito reescribirlo con un kit de herramientas diferente.

Cabe señalar que he escrito este programa en C++ y que no quiero tener que escribir la parte de la GUI en C u otra cosa, por lo que el kit de herramientas debe ser compatible con C++.

Además un conjunto de herramientas de plataforma cruzada sería preferible a un único conjunto de herramientas de plataforma. Sin embargo, si debe ser un conjunto de herramientas de plataforma única, preferiría que fuera para Linux.

Por último, DRAMÁTICAMENTE preferiría un kit de herramientas de código abierto para un kit de herramientas de código cerrado.

Más allá de eso no puedo pensar en nada que añadir. Gracias de antemano por su tiempo y respuestas.

Hmmm en función de las respuestas, veré tanto Qt como wxWidgets y veré qué me atrae más. Yo podía aceptar varias respuestas como aceptadas pero no puedo, y como estoy considerando dos cosas, sería injusto aceptar solo una de las respuestas, tal vez en una o dos semanas, luego he examinado los conjuntos de herramientas y me he figurado que quiero usar

Respuesta

26

para C++, en mi opinión, es el conjunto de herramientas Qt menos frustrante y más prestaciones. También es completamente multiplataforma. Tenga en cuenta que Qt tendrá licencia LGPL en algún momento de marzo de 2009, cuando la versión 4.5 esté disponible. Actualmente, solo se ofrece en una licencia GPL y una versión comercial.

diseñador de interfaz gráfica de usuario de Qt es buena. Tiene muchas funciones de utilidad (biblioteca de gráficos de escenas, soporte de traducción, motor incorporado de Javascript, biblioteca WebKit incorporada). A través de MOC (un precompilador especial) también aporta algunas capacidades de enlace en tiempo de ejecución e introspección a C++.

Para su aplicación técnica, puede encontrar que Qwt (http://qwt.sourceforge.net/) proporciona lo que necesita. Está construido sobre Qt.

Qt incluso se puede usar "sin cabeza" si desea que su utilidad soporte (como redes, etc.) sin una GUI.

La otra opción de C++ multiplataforma es wxWidgets, que se puede usar pero no es realmente comparable con Qt. Es un conjunto de herramientas de nivel mucho más bajo, y no es tan fácil de usar ni completamente redondeado.Gtkmm es otra opción, en el espíritu de GTK +.

+0

Hay otra opción de C++: FLTK. Es cierto que está orientado a las aplicaciones OpenGL, pero es una API de GUI de C++ con todas las funciones, y está bajo una LGPL modificada (con una excepción de enlace estático). – greyfade

+0

Gtkmm también funciona en Windows. – drby

+1

En segundo lugar la sugerencia de Qt. En mi experiencia, Qt es la herramienta de interfaz gráfica de usuario multiplataforma de más alta calidad disponible. –

1

Qt. También puede usar KDE que está construido sobre Qt.

+0

Quizás esta es una pregunta tonta pero, ¿no es KDE solo algo de Linux? –

+0

No es una pregunta tonta ;-) KDE es _más_ usado en Linux, pero puede escribir una aplicación usando bibliotecas KDE y en principio no hay nada que impida que se ejecute en Windows. –

4

Yo diría que depende de si desea o no la apariencia nativa de los sistemas operativos a los que se dirige su aplicación. Qt, como se dijo antes, es probablemente el juego de herramientas multiplataforma más fácil de usar, sin embargo, es su propio conjunto de widgets. No obtiene una apariencia nativa de aplicación & a menos que se ejecute en KDE.

Uso wxWidgets en el trabajo. Puede ser frustrante a veces y en algunos lugares no muy refinado, pero le da el aspecto nativo de las plataformas a las que se dirige. En realidad, ajusta los controles de interfaz de usuario nativos para darles una API común en todas las plataformas a las que se transfiere wxWidgets.

+1

El aspecto y la sensación de Qt en las plataformas se ha mejorado notablemente en términos de integración con su escritorio. En Windows, realmente parece una aplicación de Windows. Lo mismo con OS X, barra de menú de la aplicación y todo. –

+0

Si bien es cierto, todavía terminas usando diferentes conjuntos de clases para objetivos de Windows y Mac. Desde QMacStyle para OS X y desde QWindowsXPStyle para Windows, mientras que wxWidgets tiene una sola API para todas las plataformas –

+0

, creo que no entiende cómo funcionan los estilos en Qt. La API real es idéntica, el motor de estilo es un componente separado, que a menudo ni siquiera tiene que tocarse. El único caso para entregar un comportamiento especial es diseñar sus propios widgets dibujados personalizados, que es algo que wx tampoco maneja. –

3

También recomendaría wxWidgets junto con DialogBlocks, que es un muy buen constructor visual de GUI.

Diré que wxWidgets tiene algunas asperezas, pero la comunidad de desarrollo es muy activa y extremadamente receptiva a los informes/preguntas/contribuciones.

6

Veo que a nadie le interesó GTKmm. Es la encarnación de C++ de GTK +, y es un verdadero placer utilizarla. También he usado Qt, pero no me gusta el código de señal/conexión desordenado, los archivos generados de moc_XXX, etc. GTKmm tiene señales y tal, pero no ese paso de preproceso, así como casi todo el conjunto de herramientas de Qt puede ofrecer en la arena de los gráficos

+0

Sin mencionar el hecho de que Gtk es más común en Linux, por lo que los usuarios estarán más acostumbrados a la apariencia de su aplicación. – Lalaland

+0

Al usar CMake, las cosas 'moc' se manejan automáticamente y sin la necesidad de ninguna gestión por parte del usuario. – antonone

4

Tenía la misma pregunta y busqué buenos juegos de herramientas GUI.

Al final he descubierto, que un conjunto de herramientas GUI no es suficiente - Necesito una solución completa independiente de la plataforma proporcionarme las funciones del entorno de compilación, integración IDE y de menor nivel como conectores de red y el archivo de E/S.

¿Mi resultado? Desde hace casi 9 años utilizo Qt (pero los primeros años solo para cosas de GUI) - ahora tengo aplicaciones de red altamente complejas con balanceo de carga, multithreading masivo y procesamiento de imágenes.

Puede usar Qt como usuario comercial con soporte profesional (como yo) o simplemente iniciar sus propios proyectos bajo GPL y con 4.5 con LGPL (que permite el uso comercial).

Las otras alternativas como wxWidgets y GTK ++ son muy buenas opciones para la programación de GUI.

Pero si quieres una solución completa y bien documentada, entonces Qt es tu elección.

Best Regards, 3DH

0

que utilizan wxWidgets (conjunto de herramientas) + wxFormBuilder (GUI-diseñador) + eclipse (IDE). Todas las herramientas son multiplataforma y gratuitas.