Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: makinavaja3500 en 27 Abril 2014, 01:50 am



Título: [C++] Interfaz gráfica
Publicado por: makinavaja3500 en 27 Abril 2014, 01:50 am
Hola a todos!!

He leido mucho sobre los los diferentes tipos de interfaces gráficas para C++.

Existen varias pero las mas importantes son:

- QT
- WxWidgets
- GTK+
- VC++ NET

Existen bastantes discursiones en internet y siempre se forman grupos apoyando a una interfaz gráfica y otros grupos a las otras pero sin un claro vencedor.

Como muchas discursiones son antiguas a fecha de hoy, ¿podríais decirme cual es para vosotros la mejor interfaz gráfica para C++ o con cual soleis trabajar y las razones?.


Saludos y gracias


Título: Re: [C++] Interfaz gráfica
Publicado por: eferion en 27 Abril 2014, 02:38 am
Las 4 opciones que has puesto son multiplataforma, por lo que me ahorro comentar este detalle :)

* Qt: Es un framework completo. No se trata solo de una interfaz gráfica... tiene clases para trabajar sockets, ficheros, puertos IR, bluetooth, bases de datos, hilos, scripting, etc. Cada vez tiene más seguidores ( el último importante, la NASA ). A mi, personalmente, me gusta bastante.

* WxWidgets: se centra en el desarrollo de interfaces gráficas. Al no ser un framework es más sencillo explorar sus posibilidades. No he tenido opción a usarlo demasiado, por lo que no puedo aportar más información.

* GTK+: Evolución de GTK, es también otra librería centrada en el desarrollo de interfaces gráficas. Tiene a sus espaldas, gracias a GTK, un amplio recorrido. Personalmente creo que su uso está más extendido en Linux que en Windows.

* VC++ NET: El entorno .Net es un framework como Qt... bueno, realmente es más parecido a Java. Puestos a desarrollar .Net en C++ yo casi recomendaría usar VB o C#, ya que ambos son los lenguajes, digamos, nativos de esta plataforma. Una de las grandes desventajas de este sistema es que no puedes controlar la memoria, con lo que es bastante sencillo conseguir una aplicación con un bajo rendimiento si no se cuida un poco su arquitectura. La principal ventaja de .Net es que su curva de aprendizaje es bastante corta... el no tener que preocuparte de la memoria es también un punto a favor de cara a cierto tipo de aplicaciones no demasiado exigentes. Debido a que funciona bajo una máquina virtual, su rendimiento es, por norma general, más pobre que las aplicaciones realizadas en C++ nativo... aunque en muchas aplicaciones de escritorio ni se nota. En Linux se pueden ejecutar aplicaciones .Net instalando el framework MONO. Al igual que Qt, no se limita únicamente a la interfaz gráfica.


Título: Re: [C++] Interfaz gráfica
Publicado por: vangodp en 27 Abril 2014, 07:29 am
¿Cual usas vos eferion? Con lo fiera que sois algunos por aquí me imagino que usan vim o emcs  ;D


Título: Re: [C++] Interfaz gráfica
Publicado por: eferion en 27 Abril 2014, 22:25 pm
Yo actualmente uso Qt... es lo que me da de comer.

vim y emacs.... eso son editores, no interfaces gráficas para aplicaciones :)


Título: Re: [C++] Interfaz gráfica
Publicado por: makinavaja3500 en 27 Abril 2014, 22:41 pm
Yo actualmente uso Qt... es lo que me da de comer.

vim y emacs.... eso son editores, no interfaces gráficas para aplicaciones :)


Gracias por contestar.

Yo estoy entre QT o WxWidgets.

QT lo he instalado y me parece lento y pesado pero a favor lo veo muy completo y la posibilidad de hacer programas mas bonitos esteticamente con QML.

WxWidgets lo veo mas ligero y mas rápido pero con un futuro no tan continuado/actualizado y menos agradable esteticamente.



¿Sabeis donde hay documentación es español de QT o WxWidgets? He buscado mucho en internet y no he logrado gran cosa.

Saludos


Título: Re: [C++] Interfaz gráfica
Publicado por: Drewermerc en 28 Abril 2014, 03:09 am
hola makinavaja3500.
bueo pues en mi opinicion me gusta mas gtk es igual raido y se me hace muy facil no soy un experto pero por lo que se de gtk se me hace una muy buena opcion.
bueno amigo pues te lamento decir que en efecto no hay mucha informacion en español mas que tratar de comprender el ingles y en español no encontraras mas que lo basico y bueno tambien una opcon es buscar informacion de como programas qt pero con qtcreator de eso si hay informacion tanto escrita como en video pero tambien la mayoria de la informacion buena esta en ingles.

y en efecto vim y emac son editores de texto y bueno yo prefiero usar vim me gusta mas que emacs  pero son muy buenos editores lamentablemente las versiones para windows no son lo mismo.


Título: Re: [C++] Interfaz gráfica
Publicado por: eferion en 28 Abril 2014, 07:15 am
QT lo he instalado y me parece lento y pesado pero a favor lo veo muy completo y la posibilidad de hacer programas mas bonitos esteticamente con QML.

QT lento?? Pesado vale por todas las cosas que tiene ( sus librerías ocupan un centenar de megas ), pero su rendimiento es bastante bueno. Si alguna ventana tarda en salir deberías revisar el código que tienes por detrás... de hecho, puedes cargar una tabla con varios miles de resultados en un suspiro... si lo haces bien, claro.

WxWidgets lo veo mas ligero y mas rápido pero con un futuro no tan continuado/actualizado y menos agradable esteticamente.

La mayor diferencia entre Qt y WxWidgets es que WxWidgets únicamente se centra en el apartado gráfico... pero no por eso ha de ser más rápida o lenta... ligera sí, arrastras muchas menos librerías.

¿Sabeis donde hay documentación es español de QT o WxWidgets? He buscado mucho en internet y no he logrado gran cosa.

El estigma de nuestro tiempo. Si quieres documentación buena y actualizada te toca pelearte con la lengua de Shakespeare. Para Qt tienes libros que tocan casi de todo... pero de momento sólo hay para la versión 4... la 5 es todo en inglés.


Título: Re: [C++] Interfaz gráfica
Publicado por: vangodp en 28 Abril 2014, 07:32 am
En QT no existe la opcion de codeblocks llamada allow multiple selection
Que permite editar varias posiciones, eso para mi es lo mejor que tiene codeblocks.
Pulsar varias partes del código ctrl+raton izquierdo y editarlas o alt+ ratón derecho para crear un cuadrado o editar varias lineas.

O yo que se que nombre lleva.
en sublime text es el multi line edit o algo asi

(http://jonathanmh.com/wp-content/uploads/2014/01/vim-multi-line-edit.gif)

Sabéis si se puede activar, por lo demás pinta genial el QT


Título: Re: [C++] Interfaz gráfica
Publicado por: makinavaja3500 en 28 Abril 2014, 07:40 am
Gracias a todos por contestar.

Eferion, ¿tienes algún programa que puedas mostrar?. Algún ejemplo con código fuente y que esté compilado como ejemplo para verlo... Algo sencillo para poder verlo..




 


Título: Re: [C++] Interfaz gráfica
Publicado por: Drewermerc en 28 Abril 2014, 08:32 am
hola makinavaja3500.
bueno pues yo te dejo un opcion por si la quieres ver para gtk+ tambien existe una herramientas  como la que quieres usar con qt y se llama WebKitGTK y aqui usas css para darle mejor aspecto a tus aplicaciones.
saludos drewermerc.


Título: Re: [C++] Interfaz gráfica
Publicado por: makinavaja3500 en 28 Abril 2014, 08:43 am
Muy interesante Drewermerc!! Lo miraré con detenimiento...


Título: Re: [C++] Interfaz gráfica
Publicado por: eferion en 28 Abril 2014, 09:14 am
En QT no existe la opcion de codeblocks llamada allow multiple selection
Que permite editar varias posiciones, eso para mi es lo mejor que tiene codeblocks.
Pulsar varias partes del código ctrl+raton izquierdo y editarlas o alt+ ratón derecho para crear un cuadrado o editar varias lineas.

Eso no es Qt... estás hablando de IDEs.

Y sí, en QtCreator, sí que puedes hacer eso... La opción la encuentras en "Refactor -> Rename symbol under cursor" usando el menú contextual.

Gracias a todos por contestar.

Eferion, ¿tienes algún programa que puedas mostrar?. Algún ejemplo con código fuente y que esté compilado como ejemplo para verlo... Algo sencillo para poder verlo..

¿Puedes ser un poco más concreto? Si buscas un programa tipo "hola mundo", quedaría así:

Código
  1. #include <QApplication>
  2. #include <QPushButton>
  3.  
  4. int main( int argc, char **argv )
  5. {
  6.    QApplication a( argc, argv );
  7.  
  8.    QPushButton boton( "Hello world!" );
  9.    boton.resize( 100, 30 );
  10.  
  11.    a.setMainWidget( &hello );
  12.    boton.show( );
  13.    return a.exec( );
  14. }

Si quieres algo más concreto coméntamelo.

Un saludo.


Título: Re: [C++] Interfaz gráfica
Publicado por: vangodp en 28 Abril 2014, 09:58 am
Bueno de IDE hablaba jeje, sinto no poner el "edits"  :laugh:
La función que comentas es buena pero no se parece para nada a la de codeblocks
de echo parece mas a un reemplazar que otra cosa. En codeblocks puedo elegir varios puntos en que no coincidan el texto y editarlos. Los voy seleccionando con el ratón.


Título: Re: [C++] Interfaz gráfica
Publicado por: eferion en 28 Abril 2014, 10:09 am
Bueno de IDE hablaba jeje, sinto no poner el "edits"  :laugh:
La función que comentas es buena pero no se parece para nada a la de codeblocks
de echo parece mas a un reemplazar que otra cosa. En codeblocks puedo elegir varios puntos en que no coincidan el texto y editarlos. Los voy seleccionando con el ratón.

Son IDEs diferentes y, por ello, su funcionalidad también es diferente... la opción que te he comentado permite hacer reemplazos selectivos, ya que únicamente reemplaza la variable o método seleccionado, es decir, si tienes dos variables que se llaman igual en diferentes partes del código, únicamente vas a cambiar el nombre de una de ellas.

En cualquier caso, nada te impide compilar Qt bajo CodeBlocks, VisualStudio, o cualquier otro IDE... un IDE no deja de ser una fachada que facilita la tarea de programar.

Obviamente usar QtCreator tiene ciertas ventajas... sobretodo al trabajar con ventanas y con herencias de QObject... pero no es nada que no se pueda solucionar en otros entornos.

nuevo: De hecho, yo raramente compilo con QtCreator... suelo usar más VisualStudio. Para automatizar el proceso de compilación utilizo una adaptación de "ant" para generar correctamente los makefiles.


Título: Re: [C++] Interfaz gráfica
Publicado por: vangodp en 28 Abril 2014, 10:37 am
Bueno gracias amigo!  ;D
al menos algo me has dado ;)))  ;-)


Título: Re: [C++] Interfaz gráfica
Publicado por: makinavaja3500 en 28 Abril 2014, 23:51 pm
Eso no es Qt... estás hablando de IDEs.

Y sí, en QtCreator, sí que puedes hacer eso... La opción la encuentras en "Refactor -> Rename symbol under cursor" usando el menú contextual.

¿Puedes ser un poco más concreto? Si buscas un programa tipo "hola mundo", quedaría así:

Código
  1. #include <QApplication>
  2. #include <QPushButton>
  3.  
  4. int main( int argc, char **argv )
  5. {
  6.    QApplication a( argc, argv );
  7.  
  8.    QPushButton boton( "Hello world!" );
  9.    boton.resize( 100, 30 );
  10.  
  11.    a.setMainWidget( &hello );
  12.    boton.show( );
  13.    return a.exec( );
  14. }

Si quieres algo más concreto coméntamelo.

Un saludo.

Hola eferion.

Comentaste que la velocidad de un programa realizado en QT es similar a WxWidgets y te pedía si podías poner un programa ejemplo compilado y con su código fuente para ver su velocidad y depaso como es su programación.

Te pedí esto porque me acabo de instalar recientemente QT y al compilar con QT-Creator siempre que ejecuto el .EXE me pone:

"Error al iniciar la aplicación porque no se encontró Qt5Cored.dll"



Título: Re: [C++] Interfaz gráfica
Publicado por: eferion en 29 Abril 2014, 00:02 am
Qt es un framework que ocupa varios megas. La forma normal de trabajar con este framework ( para no infringir licencias ) es usarlo como librería externa. Esta forma de usar la biblioteca implica que tienes que llevarte ciertas librerías junto con tu ejecutable para poder hacer correr la aplicación.

Desde QtCreator esto no pasa porque el IDE ya se encarga de cargar las librerías de forma automática. Si quieres arrancar tu el ejecutable directamente tienes que copiar una serie de librerías en el mismo sitio donde se encuentre el ejecutable.

Mi consejo mientras aprendes Qt es que vayas poco a poco... primero aprende a desarrollar aplicaciones y luego aprende a distribuirlas. El proceso es menos traumático así... te lo digo por experiencia.

Y por el tema de velocidad... en serio, no te preocupes por eso ahora. En este mundo hay que estar listos para no abrir demasiados frentes de golpe... pueden acabar con cualquiera. ( He visto más de un pequeño proyecto irse al garete porque la gente ha empezado a obsesionarse con el tema del rendimiento y ha dejado de lado cosas más importantes... el rendimiento es importante, pero no te sirve de nada si tu aplicación no funciona ).

Resumiendo: mientras coges soltura, usa QtCreator para probar tus aplicaciones. Cuando tengas algo de soltura con Qt me avisas y te explico los pasos a seguir para poder llevarte tus aplicaciones donde te de la gana.


Título: Re: [C++] Interfaz gráfica
Publicado por: BloodSharp en 29 Abril 2014, 05:52 am
* VC++ NET: Una de las grandes desventajas de este sistema es que no puedes controlar la memoria

Te equivocaste ahí, se puede utilizar y controlar la memoria sino fijate el siguiente link:

http://msdn.microsoft.com/en-us/library/chfa2zb8.aspx


B#


Título: Re: [C++] Interfaz gráfica
Publicado por: eferion en 29 Abril 2014, 08:35 am
Te equivocaste ahí, se puede utilizar y controlar la memoria sino fijate el siguiente link:

http://msdn.microsoft.com/en-us/library/chfa2zb8.aspx


B#

Puedes hacer un delete directamente y que, en ese preciso momento, se libere la memoria dinámica??? no, verdad??? de hecho ni tan siquiera existe el operador "delete"... pues eso.

Lo que tu comentas es que en determinadas partes del código ( sobretodo para tener compatibilidad con código nativo ), se permite el uso de punteros "crudos" al más puro estilo C++ tradicional... pero tu no puedes elegir libremente el ciclo de vida real de un objeto en la plataforma .NET.


Título: Re: [C++] Interfaz gráfica
Publicado por: makinavaja3500 en 29 Abril 2014, 23:35 pm
GRACIAS a todos por responder y aclararme las ideas!!!