Re: [embeb32] Programacion de interfaces graficas

561 views
Skip to first unread message

Gustavo Ramoscelli

unread,
Aug 25, 2014, 12:03:01 PM8/25/14
to embeb...@googlegroups.com
Hola Mauricio,
  Me parece que lo primero que tenes que especificar es la plataforma sobre la cual vas a trabajar: Windows, Linux, Android, etc.
En cada plataforma, la solución puede ser distinta. Por ejemplo, hoy en día mucha gente usa Qt para la parte del GUI. En mi caso uso Delphi (Pascal) para aplicaciones en PC porque me resulta más fácil. Una vez que especificas la plataforma, más el entorno (e.g. IDE: Qt, Visual Studio, Glade, TCL/TK, etc) las herramientas para armar la parte gráfica (2D) vienen con el entorno.

Gustavo

El 25/08/14 12:49, Mauricio escribió:
Hola gente, mi consulta es básica pero quizás no tan fácil de responder.

Es necesario si o si saber POO para programar en algún lenguaje para hacer interfaces gráficas en entorno Windows?

Recuerdo que en Borland C o en Turbo C, programaba interfaces gráficas bajo DOS, con comandos como por ejemplo:

Para inicializar el modo grafico era simplemente escribir estas lineas:
int gdriver = DETECT, gmode, errorcode;
   initgraph(&gdriver, &gmode, "C:\\TC\\BGI");
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1); /* terminate with error code */
   }

Y luego era muy facil, usabas funciones como:
setcolor(WHITE);
circle(135,100,5);
line(140,100,160,100);
rectangle(160,105,200,95);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);
outtextxy(110,100,"+E");

Una captura del programa es por ejemplo esta (corriendo bajo Android con DOSBox):

Ahora mi pregunta es: es posible hacer esto mismo pero sin la complejidad de POO, y con la simpleza que se hacian las interfaces en Borland o Turbo C ?
He visto ejemplos de programación de interfaces y son un dolor... con tiras de instrucciones larguísimas para hacer una simple ventana, y todavía aparte nunca encontré de forma clara un tutorial completo para hacer algo como el programa que les muestro en el screenshot.

Si existe algo en C, mejor porque es el unico lenguaje que se medianamente bien. Se que en Python algo se puede hacer, pero tendria que cambiar de lenguaje y empezar con otro nuevo desde cero.

Gracias y saludos,

Mauricio.
--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


-- 
Ing. Gustavo Ramoscelli
Laboratorio de Ciencias de las Imágenes
IIIE - DIEC
Universidad Nacional del Sur
Tel: (0291) - 4595101 - int. 3380

Mauricio

unread,
Aug 25, 2014, 12:25:53 PM8/25/14
to embeb...@googlegroups.com
Hola Gustavo, gracias por tu respuesta.

En principio usaría Windows. Sobre el entorno justamente es lo que no se como definir, no se cual sera el mas facil o similar a lo que hacia en Turbo C.
Me comentaron que Delphi es facil de usar, pero como dije, deberia aprender Pascal desde cero.
Vi tambien un poco de TCL/TK, y no tiene nada que ver con C...

Saludos.

Turconi Gmail

unread,
Aug 25, 2014, 12:47:24 PM8/25/14
to embeb...@googlegroups.com

Hola Mauricio :

 

Lo mas parecido y que se programa en C es Borland C++ desde el 6.0 en adelante es facil y se programa tanto en C como C++ y podes usar POO…

 

Yo venia de Turbo C y como es C tambien preferi eso a Visual Basic de Microsoft y me gusta mas Borland…..

 

Para graficar uso componentes de iocomp mirate la pagina …. Y hay tambien gratuitos para hacer graficos, barras, botones y demas….

 

Saludos y suerte … Diego

 

 


Gustavo Ramoscelli

unread,
Aug 25, 2014, 12:47:44 PM8/25/14
to embeb...@googlegroups.com
TCL/TK es un lenguaje de scripting (en realidad, dos : el TCL y el TK) y se usa para armar ventanas. La parte gráfica 2D,  que podemos titular de bajo nivel, como dibujar lineas o pintar pixels, se puede hacer en C. Te recomeindo que te empapes con Qt: bajate el Qt Creator y algunos ejemplos para armar la GUI. Despues, una vez que te familiarices con las clases de Qt, vas a ver que es relativamente sencillo (no fácil, sencillo!) hacer gráficos sobre algún canvas.
A futuro, podes migrar a Linux o Android usando el propio Qt.

Gustavo

El 25/08/14 13:25, Mauricio escribió:

Andres Cassagnes

unread,
Aug 25, 2014, 1:19:09 PM8/25/14
to embeb...@googlegroups.com
Solo para sumar, recomiendo wxWidgets. Es multiplataforma, gratuito y completamente libre, aunque es C++, pero no se hace difícil armar cosas siguiendo de entrada algún tutorial y se me hizo más simple que visual studio aunque uno sepa C++. Qt es muy recomendable también. Trabajé con ambos. 
Si te interesa te dejo un pequeño tutorial de descarga y puesta en marcha de wxWidgets bajo Windows usando como ide el Code::Blocks:

Andrés

Guillermo Villamayor

unread,
Aug 25, 2014, 1:19:50 PM8/25/14
to embebidos32@
Mauricio hace rato que no veo un programa con gráficos BGI no se si se sigue soportando. Yo se que es medio molesto aprender de nuevo algo que supuestamente lo sabías pero en este laburo las cosas son asi.
Si sabes C el Qt o el GTX son opciones fáciles, no son las mejores, pero es lo mas rápido de aprender. No son totalmente multiplataforma pero casi. Si querés algo sencillo para Windows te recomiendo el Visual Studio, tenés que pelearla un poco mas pero vale la pena. Para algo mas profesional habría que estudiar un poco exactamente que es lo que querés hacer. No es tan difícil si te ponés en unos días estás haciendo pantallitas.

Mauricio

unread,
Aug 25, 2014, 1:28:34 PM8/25/14
to embeb...@googlegroups.com, diego....@gmail.com
Gracias Diego.

Yo se QBasic (el de DOS), pero cuando vi Visual Basic me di cuenta que nada que ver. Aparte recibi muchos comentarios negativos de programadores.

Por otro lado quiero seguir por la senda del C, ya que me gusta y estoy acostumbrado.

Saludos.

Mauricio

unread,
Aug 25, 2014, 1:31:30 PM8/25/14
to embeb...@googlegroups.com
Hola Gustavo,

Vi un poco de TCL/TK en un curso que hice, pero nos enseñaron cosas triviales como hacer ventanitas y botones para cerrar o abrir otras ventanas.
Tampoco consegui buenos tutoriales para seguir aprendiendolo.

Baje tambien Qt creator, y encontre pocos ejemplos, o incompletos, o no los entendi.

Lo que hasta ahora me parecio muy claro de programar fue Python, ahora no me acuerdo cual era el IDE grafico que use... creo que WxPython pero no estoy seguro.

De todas formas quisiera seguir con C.

Saludos,
Mauricio.

Andres Cassagnes

unread,
Aug 25, 2014, 1:39:11 PM8/25/14
to embeb...@googlegroups.com
Incluso si tu idea es poder graficar y cosas por el estilo wxWidgets sigue siendo una buena opción ya que tiene inclusive librerías y recursos para realizar gráficos, además de otro montón de cosas. Pero como dije antes el tema es que es C++ aunque lo que usa habitualmente de POO son cosas bastante fáciles de adquirir

Mauricio

unread,
Aug 25, 2014, 1:56:19 PM8/25/14
to embeb...@googlegroups.com
Hola Andres gracias, voy a ver el tutorial que tal esta.
En el 2012 un compañero me mostro un poco de WxWidgets, y vi que era tambien con POO a full. No entendi absolutamente nada... me parecio demasiado complejo hasta para hacer una ventanita.
Pero bueno, como todo, si conseguis un buen libro o tutorial claro, podes aprender.

Saludos,
Mauricio.

Mauricio

unread,
Aug 25, 2014, 1:57:48 PM8/25/14
to embeb...@googlegroups.com
Gracias Guillermo, trate con Visual Studio pero no pude hacer nada.
Por eso es la razon de mi pregunta, y por eso puse ejemplos de lo sencillo que hacia las interfases graficas con Turbo C.

Saludos,
Mauricio.

Fernando Lichtschein

unread,
Aug 25, 2014, 1:59:50 PM8/25/14
to embeb...@googlegroups.com
Si no querés pasarte a C++ hay una biblioteca para juegos en C que se llama Allegro.

Saludos,

Fernando

martin ribelotta

unread,
Aug 25, 2014, 2:02:46 PM8/25/14
to embeb...@googlegroups.com
El 25 de agosto de 2014, 14:31, Mauricio <mnmel...@gmail.com> escribió:
Hola Gustavo,

Vi un poco de TCL/TK en un curso que hice, pero nos enseñaron cosas triviales como hacer ventanitas y botones para cerrar o abrir otras ventanas.
Tampoco consegui buenos tutoriales para seguir aprendiendolo.

Baje tambien Qt creator, y encontre pocos ejemplos, o incompletos, o no los entendi.
Qt mal documentado????? No debiste encontrar los ejemplos correctos:
Como muestra un boton:

Y para mas placer:

Si Qt te parece poco documentado, entonces mas vale que no veas lo horrendo que esta documentado GTK que recomiendan mas arriba.

Esteban Menin

unread,
Aug 25, 2014, 2:25:18 PM8/25/14
to embeb...@googlegroups.com
como consejo también te diría que leas tutoriales, de diseño de interfaces, como que colores usar o como hacerlas mas compresibles e intuitivas para el usuario, también podes ver el libro:
 "Ian Sommerville Ingenieria de Software 7 Edicion"

 saludos! 

Guillermo Enrique VIDES

unread,
Aug 25, 2014, 2:40:58 PM8/25/14
to embeb...@googlegroups.com
Mi voto por QT. Hay un par de libros que arrancan de cero y estan muy buenos. Yo estoy aprendiendo pero es impresionante lo que se puede hacer. Además es multiplataforma. 

C++ Gui programming with QT
An Introduction to Design Patterns in C++ with QT


Date: Mon, 25 Aug 2014 11:25:10 -0700
From: embeb...@googlegroups.com
Subject: Re: [embeb32] Programacion de interfaces graficas
To: embeb...@googlegroups.com

Leandro Francucci

unread,
Aug 25, 2014, 2:54:37 PM8/25/14
to embeb...@googlegroups.com
Mauricio,

Otra cuestión interesante para agregar a lo que han aportado, es respecto al diseño y control de la interface de usuario por medio de modelos, independientes de la biblioteca gráfica, lenguaje, plataforma, etc.

Las GUI son, por naturaleza, un sistema reactivo, el cual reacciona a los estímulos que produce el usuario cuando utiliza la interface, por lo tanto, es natural que su comportamiento dinámico, pueda modelarse por medio de un lenguaje visual y formal, como lo es un Statechart, los cuales ejercen el control de la interface.

A su vez, los fundamentos y conceptos inherentes a la semántica de los Statecharts están relacionados con POO, aunque esto no implica un lenguaje de programación particular.

Para enteder mejor este hecho, te recomiendo, a mi juicio, un libro muy bueno en este tema: "Constructing the User Interface with Statecharts" de Ian Horrocks, el cual podés encontrar en la web.

Saludos!

Ing. Leandro G. Francucci
Investigación y Desarrollo
Delsat Group SA
Tel. +54 (223) 4945001
Fax: +54 (223) 4945111
Mar del Plata - Argentina
www.delsatgroup.com

Mauricio

unread,
Aug 25, 2014, 9:27:54 PM8/25/14
to embeb...@googlegroups.com
Esta bien Gustavo... pero veo codigo como este:

QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()))
Y para mi no tiene nada que ver al codigo C que siempre use, por eso queria algo sencillo y en la linea del C. 
No entiendo nada de operadores :: o SIGNAL o tantas palabras y tantas lineas para hacer una simple ventana.
Me parece mas para alguien de sistemas, o alguien que se ponga a estudiar mucho sobre POO 

Mauricio

unread,
Aug 25, 2014, 9:29:44 PM8/25/14
to embeb...@googlegroups.com, flicht...@ort.edu.ar
Lo habia leido en Taringa, voy a averiguar mas.

Gracias!

Mauricio

unread,
Aug 25, 2014, 9:30:29 PM8/25/14
to embeb...@googlegroups.com
Gracias, si empieza desde cero puede ser bueno. Voy a hojearlo.

Mauricio

unread,
Aug 25, 2014, 9:32:07 PM8/25/14
to embeb...@googlegroups.com, fran...@itdelsat.com.ar
Gracias Leandro, buen aporte. Lo voy a tomar como un siguiente paso una vez que aprenda la mecanica de la creacion de GUIs.

Mauricio

unread,
Aug 25, 2014, 9:32:56 PM8/25/14
to embeb...@googlegroups.com, esteba...@yahoo.com.ar
Gracias Esteban!

Guillermo Enrique VIDES

unread,
Aug 26, 2014, 7:13:20 AM8/26/14
to embeb...@googlegroups.com
Gustavo

Esta es una de las ideas mas brillantes de QT, la manera que modeliza la programacion por eventos. Solo tenes que imaginar que es una manera de relacionar un evento (SIGNAL) con una accion (SLOT). Es mucho mas simple que lo que ocurre en otros lenguajes. 
saludos

Guillermo



Date: Mon, 25 Aug 2014 18:27:54 -0700
From: mnmel...@gmail.com
To: embeb...@googlegroups.com

Subject: Re: [embeb32] Programacion de interfaces graficas

Daniel Romero

unread,
Aug 26, 2014, 9:52:22 AM8/26/14
to embeb...@googlegroups.com
Hola Mauricio, si querés diseñar rápidamente una interfaz sobre Windows y después te queres concentrar en programar yo te recomiendo que uses .NET. Podés usar C++, C# o VB.NET, la verdad que con la utilización del framework y la compilación en lenguaje intermedio, sumado a los cambios que se realizaron sobre VB.NET para que sea un lenguaje completamente orientado a objetos, ya no resulta fácil decir que un lenguaje en particular es mejor que los otros, ya es más bien una cuestión de comodidad y de donde te sientas más a gusto. La interfaz gráfica va a ser la típica de windows pero con el uso de programación orientada a objetos podés mutarla mucho y si usas las bibliotecas gráficas gdi y gdi+  que viene en el framework podés hacer prácticamente lo que quieras. Lo único malo es que no es libre, pero existe a partir de la versión 2010 una versión expres que es casi lo mismo que la paga y que te la podés bajar del sitio de Microsoft. Realmente casi no hay diferencias entre las versiones expres y profesional. El C#.net en particular es muy amigable y se parece al C. El diseñador gráfico permite dibujar la pantalla de forma muy sencilla y escribe el código automáticamente aunque lo oculta, después tenes que darte cuenta dónde está. La programación de la interacción de la parte gráfica con el programa es mediante eventos por ejemplo Private button_click(), es muy sencillo. Si querés programar en Windows de una manera sencilla dale una oportunidad.

Saludos.

Mirko Leonardo Serra Labán

unread,
Aug 26, 2014, 10:19:15 AM8/26/14
to embeb...@googlegroups.com
Posiblemente es lo que mucha gente odia de los lenguajes OOP: las abstracciones innecesarias.

Guillermo Villamayor

unread,
Aug 26, 2014, 10:44:58 AM8/26/14
to embeb...@googlegroups.com
En todos los lenguajes hay que hacer lo mismo. Por ejemplo si querés colocar un botón tenés que ponerle un listener porque podría estar de adorno, decirle con que acción va a responder, por ejemplo mouse clicked, mouse released, double click, etc. y que tiene que hacer cuando recibe alguna de esas acciones es decir que código tiene que ejecutar.
No es dificil, cada lenguaje tiene sus mañas y hay que aprenderlo.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a mailto:embebidos32%2Bunsu...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a mailto:embebidos32%2Bunsu...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Mirko Leonardo Serra Labán

unread,
Aug 26, 2014, 10:57:21 AM8/26/14
to embeb...@googlegroups.com
No necesariamente. Cuando hablábamos de Borland, por ejemplo, suele haber una función que se llama ante un evento. El término función es, por un lado, algo conocido para el programador; por otro lado, es lo que realmente ocurre: se llama a una función.

En este caso en cuestión, se camufla el llamado a la función creando una abstracción, un concepto irreal, que se refiere a un slot y a una signal. Es decir, no solo es una abstracción, sino que es una abstracción innecesaria (el caso anterior era más claro y más cercano a la realidad... y evita aprender el concepto nuevo de signal/slot... y posiblemente sea más rápido en cuanto a la ejecución de código).

Las abstracciones son buenas cuando son bien usadas, pero realmente maléficas cuando se abusa de ellas. Creo que a eso se refería Torvalds (cerca del inicio del thread de hace unos días Programación C/C++ creo) cuando decía que prefería evitar C++ en favor de C.

Fernando Cacciola

unread,
Aug 26, 2014, 11:06:16 AM8/26/14
to Embebidos32
Hola Mauricio,

2014-08-25 22:27 GMT-03:00 Mauricio <mnmel...@gmail.com>:
Esta bien Gustavo... pero veo codigo como este:


QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()))

Y para mi no tiene nada que ver al codigo C que siempre use, por eso queria algo sencillo y en la linea del C. 

Eso lo que hace es programar que, cuando se haga "clicked" en el boton llamado "quitButton", se llame a la función "quit()" del objeto "qApp"

La razón por la cual no tiene nada que ver con el código C que siempre usaste es mayormente porque nunca tuviste un boton, y quisite hacer algo cuando se hace click, y que ese algo sea un "método" de por ejemplo tu aplicación (y no de algún otro "componente")

 
No entiendo nada de operadores :: o SIGNAL o tantas palabras y tantas lineas para hacer una simple ventana.

Ojo con eso... si realmente queres una simple ventana entonces el código Qt es una, cuando mucho dos lineas.
Pero el tema es que difícilmente quieras una simple ventana. Tambien querrás que tenga "controles", o sea cosas con las que tu usario interactúa, como ser un botón.
Y entonces querrás que se llame a la función que tu hayas programado cuando el usuario hace algo con dichos controles, por ejemplo, hace click en un botón.
Y ahí es donde el diseño de Qt es todo lo sencillo que se puede ser en C++ (hay otros lenguajes como C# que tienen--a nivel de lenguaje--eventos (*), por lo que se puede hacer más sencillo)

Lo que sigue lo digo solo porque viene absolutamente al caso....

A fines de los 80 hice, justamente en Turbo C y en DOS, una libreria para GUI, o sea con ventanas, menues, botones, etc,  y formas de conectar eventos en en los controles (o sea "signals" en Qt), con respuetas en otros (o sea, "slots" en Qt). Y lo hice en C porque todavía no había aprendido C++. Resultó, hmm, interesante, pero fue muy muy complejo y díficil no solo de diseñar sino de programar y de usar (era una librería que despues usé en varios proyectos posteriores). Entonces puedo decirte con total conocimiento de causa, que un programa OOP, en por ejemplo, Qt, es infinitamente más sencillo que un pograma *equivalente* en C y solo con del BGI, aún con una librería detrás.
 
Me parece mas para alguien de sistemas, o alguien que se ponga a estudiar mucho sobre POO 

Como otras dijeron en realidad no tienes que estudiar mucho POO. Es más, puedes solo estudiar Qt, por ejemplo, y solo lo que necesitas de él, sin si quiera leer "formalmente" sobre OOP

De hecho, a principios de los 90 yo programaba usando una librería en C++ para GUIs en DOS (antes de Windows) y lo hacía en C, usando "objetos" (porque la librería era C++) sin haber aprendido nada de C++. No solo me resultaba totalmente natural y sencillo sino que hizo que aprender formalmente C++ un años despues fuera facilísimo.




--
Fernando Cacciola
SciSoft Consulting, Founder
http://www.scisoft-consulting.com

Mauricio N. Melocchi Abdala

unread,
Aug 26, 2014, 11:06:47 AM8/26/14
to embeb...@googlegroups.com
OK Daniel, 

Entonces vos decis que C#.NET es similar al C ? 
Voy a verlo. La verdad que me han dado tantas opciones en este hilo, que voy a hacerme una tabla con todos los datos y ponerme a ver en profundad uno por uno.
Mauricio N. Melocchi
Ingeniero en Electronica
Derqui 42, Godoy Cruz (CP/ZIP code) 5501

Guillermo Enrique VIDES

unread,
Aug 26, 2014, 11:53:46 AM8/26/14
to embeb...@googlegroups.com
Esta abstraccion innecesaria te permite hacer cosas que en lenguajes de mayor abstraccion (JAVA) es mucho mas complicado.
una SIGNAL puede disparar multiple SLOT
una SIGNAL puede disparar a otra SIGNAL
Multiple SIGNAL pueden disparar a un SLOT

Saludos
Guillermo



Date: Tue, 26 Aug 2014 11:57:16 -0300

Subject: Re: [embeb32] Programacion de interfaces graficas

Mirko Leonardo Serra Labán

unread,
Aug 26, 2014, 12:12:02 PM8/26/14
to embeb...@googlegroups.com
En tal caso, se crea una función que llama varias funciones (para disparar múltiples funciones con una sola). Se puede asignar a la propiedad OnClick, por ejemplo, la misma función que a la propiedad OnFocus, teniendo también el caso de asignar una función a varias acciones. También una función puede llamar al método OnClick por ejemplo desde OnFocus, teniendo lo de una signal disparando otra.

Todo prescindiendo de la abstracción. No digo que no sea útil en algún lenguaje, digo que en el caso de lenguajes poderosos como C++, es innecesaria. Y si es innecesaria, se le hace aprender algo innecesario al programador y resulta en un obstáculo (obstáculo en aprendizaje que redunda en un obstáculo en cuanto a la implementación, lo que hace que menos gente use dicho producto). Dudo que no se pueda hacer de la misma forma descrita para C++ en el caso de Java.

Guillermo Enrique VIDES

unread,
Aug 26, 2014, 12:29:38 PM8/26/14
to embeb...@googlegroups.com
C++ como lenguaje es muy poderoso, pero de bajo nivel por lo que carece de esas abstracciones que les proporcionan las librerias que uno elije (ya sea visualc++,Qt,wxwidgets,etc.) O sea creo que el dilema no es C++ o QT sino C++ y que otra libreria usar. 
Por lo menos yo no creo que sea logico volver a implementar BOOST ;)

Saludos
Guillermo 


Date: Tue, 26 Aug 2014 13:11:56 -0300

Mirko Leonardo Serra Labán

unread,
Aug 26, 2014, 12:45:38 PM8/26/14
to embeb...@googlegroups.com
No discuto la necesidad de la librería.

Discuto que algo como:
quitButton->OnClick = quit;
Es definitivamente más claro que:
QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()))
Más claro, y más acorde al lenguaje. Y no hace falta ningún concepto de slot, signal, ni nada de eso. Esos conceptos pueden ser útiles si alguien se va a dedicar de lleno a hacer interfaces gráficas, pero no lo es, especialmente cuando alguien quiere algo lo más parecido a un ejemplo de BGI de Turbo C.

Andres Cassagnes

unread,
Aug 26, 2014, 1:13:56 PM8/26/14
to embeb...@googlegroups.com
En ese sentido es por lo que recomiendo wxWidgets, es C++ sin capas extras de abstracción y gran parte de las cosas se implementan con funciones y métodos directamente. De todos modos Qt es muy poderoso y sabiendo usar esos recursos, como los signals y los slots, se simplifican muchas cosas.

Cualquier librería/framework que uno elija para hacer GUIs, como para cualquier otra cosa, tienen cierta curva de aprendizaje. En este sentido creo que lo mejor es que el quiera meterse en ese mundo los vea, los pruebe si hace falta, y elija alguno. Yo al menos hice así y pasé por varias cosas (como java, Visual C++, QT, wxWidgets) hasta que encontré uno que satisfacía mis necesidades y con el que me sentía cómodo.
También hay que tener en cuenta cuantos recursos se necesitan para poner a andar una librería y que tan complejo puede ser bajar, instalar, compilar, etc sus recursos.

Fernando Cacciola

unread,
Aug 26, 2014, 1:35:20 PM8/26/14
to Embebidos32
2014-08-26 13:45 GMT-03:00 Mirko Leonardo Serra Labán <mirko...@gmail.com>:
No discuto la necesidad de la librería.

Discuto que algo como:

quitButton->OnClick = quit;

Muchas veces uno necesita asociar más de una función, por lo que eso sería:


quitButton->onClick += quit ;
quitButton->onClick -= quit ;

 
Es definitivamente más claro que:

QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()))


De acuerdo. Pero...

 
 
Más claro, y más acorde al lenguaje.

Decididamente NO es mas acorde al lenguaje, salvo que no te refieras a C++, o que te refieras a C++14.

Qt y sus signals/slots existen desde los 90 y en esa época no había forma más clara, prolija y *eficiente* de conectar 2 objetos para que un mensaje saliente de uno (signal) resulte en un mensaje entrante en de otro (slot)

Esa sintaxis de arriba es la que se usa en, por ejemplo, C#. Pero esto es posible porque .Net soporta lo que se denomina *closures*, que son objetos que encapsulan una instancia junto a un método de esta. 

Entoncews, en un lenguaje que no soporta closures, no se puede pretender la misma syntaxis que en uno que sí.


 
Y no hace falta ningún concepto de slot, signal, ni nada de eso.


El problem de juzgar las abstracciones es que eso no se puede hacer sin el "big picture".

Lo que proponés con tu sintaxis, y que otros lenguajes como C# usan, se basa en el concepto de "eventos" y "listeners de tales eventos". Eso es algo estandar en GUI y por tanto muy familiar.
Pero má allá de la syntaxis que se use para que le resulte claro al usuario final, este mecanismo de eventos tiene una determinada arquitectura: hay un event manager que maneja una cola de eventos y uno subscribe uno o más listeners para que reciban eventos de esa cola. Cada listener, pongamos una ventana, filtra tales eventos y los re-dispacha a sus controles hijo, como ser un boton.
Luego, teniendo a dispocición este mecanismo de eventos, uno puede subscribir determinados callbacks (como ser la función App::quit())  como listener de determinado evento (como ser button::clicked())

Qt tiene un mecanismo de eventos tal como cualquier otra libreria de GUI.

Ahora bien, si lo único que quiero es que un objeto en particular, pongamos la aplicación, sea comunicado, pongamos via App::quit, toda vez que otro objeto en particular, pongamos "quitbutton", dice algo, pongamos "clicked", siendo que clicked del boton, a su vez es en respuesta a un evento (pasado por la ventana padre en este caso), entonces tiene sentido usar OTRO mecanísmo que no es el de eventos. Uno más directo y eficiente y que conecta directamente a esos dos objetos.

Para eso existen signals/slots.

NO son lo mismo que los eventos, que es lo que usualmente uno ve en otros lenguajes. Y lógicamente, no siendo lo mismo, tienen usos "normales" que van más allá de las interacciones entre los elementos de una GUI.

Entonces Qt ofrece conceptos nuevos que no encontramos en otros frameworks, pero es porque son muy poderodos.


Esos conceptos pueden ser útiles si alguien se va a dedicar de lleno a hacer interfaces gráficas, pero no lo es, especialmente cuando alguien quiere algo lo más parecido a un ejemplo de BGI de Turbo C.


Para alguien que busca lo más parecido a un BGI con Turbo C todo esto es tan poco relevante como puede serlo un "futuro" o una "co-routina" hablando de problemas concurrentes, y eso es porque en BGI solo se pueden hacer dibujitos en la pantalla, que nada tiene que ver con crear una GUI (salvo que lo consideremos al mismo nivel que prender o apagar pixeles en un buffer de video)

martin ribelotta

unread,
Aug 26, 2014, 1:50:43 PM8/26/14
to embeb...@googlegroups.com
Disiento fuertemente de eso Mirko. Basicamente puede parecer facil al principio, pero apenas intentamos hacer alguna cosa "de verdad" (algo que no sea un hola mundo) con cualquier framework que no apoye el concepto de signal/slot (TODOS lo tienen, gtk,Qt, wxWidget, etc) termina siendo inusable.

El 26 de agosto de 2014, 13:45, Mirko Leonardo Serra Labán <mirko...@gmail.com> escribió:
No discuto la necesidad de la librería.

Discuto que algo como:

quitButton->OnClick = quit;
Por ejemplo en esto:
Supongo que quit es una funcion... ¿Sobre que actua? ¿Sobre la ventana? ¿Sobre la aplicación? ¿Sobre un elemento visual determinado?

El hecho de tener signals y slots (cosa que incluso en tu ejemplo existe aunque bastante escondido y peligrosamente obscurecido por el lenguaje/libreria/loquesea) permite poder pasar mensajes dinamicamente entre distintos contextos sin necesitad de definir objetos/subobjetos (cosa que mas arriba o mas abajo alguien dijo que era una desventaja de C++)
 
Es definitivamente más claro que:

QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()))
Más claro, y más acorde al lenguaje. Y no hace falta ningún concepto de slot, signal, ni nada de eso. Esos conceptos pueden ser útiles si alguien se va a dedicar de lleno a hacer interfaces gráficas, pero no lo es, especialmente cuando alguien quiere algo lo más parecido a un ejemplo de BGI de Turbo C.

Sobre gustos no hay nada escrito, dijo una vieja... Pero es innegable que TODA la programación de GUIs se centra en los mismos conceptos. Listeners, senders, signal/slots o como quieran llamarlos.

Yo programe en la epoca de las GUIs de pasaje de eventos entre distintos event-loops (TurboVision, Win16/Win32, VisualC-que-todavia-existe) y te puede asegurar que era un infierno de mantenibilidad. El concepto de listener, sender, signal y slot vino a solucionar esto (primero de la mano de Delphi, mas como parche que como concepto) y luego con VisualBasic y su contemporaneo Java-AWT/SWING.

Lo que yo critico (con buena leche, que nadie se me ofenda) es el miedo a aprender conceptos nuevos.

Hoy decimos que como electronicos no nos gusta programar ignorando que:
* El diseño de chips es programar: hay que saber VHDL, Verilog, TCL, SystemC, SystemVeriloc, metodologias de verificacion, trabajo con la herramienta, makefiles, y lo que el vendedor nos quiera hacer aprender
* Hacer electronica digital es mas de lo mismo: VHDL, Verilog, etc.
* Diseñar un PCB tanto o mas: Herramientas de checkeo, sistemas de reprecentación, lenguajes de automiatización.
* RF: Todo lo que el fabricante de la herramienta de diseño se le ocurra que tenemos que aprender

Por eso no me parece nada del otro mundo aprender un concepto tan elemental y directo como la POO y la sintaxis especifica de un framework de C/C++ o de lo que sea.

Tal vez alla lenguajes mas o menos faciles para tal o cual persona/problema, pero puedo decir con casi total seguridad que NUNCA encontraremos la herramienta ideal hecha para nosotros (ni siquiera si la hacemos nosotros) así que cualquier cosa que uno quiera hacer implica un proceso de aprendizaje. En la electrónica se espera que quien se meta en ello haga algo mas que poner un led en un protoboard y conectarle un arduino (Tachan! Eso es C++!!!) para hacerlo titilar.

Todos los framework de GUI actuales trabajan bajo los mismos conceptos, ya sea Qt, wxWidget (bastante mas compleja y menos flexible ya que usa signals/slots con las restricciones sintacticas de C++ pre 2011), gtk (aborto de la naturaleza que te obliga a escribir miles de lineas para definir un objeto nuevo y a mantener en tu cabeza el concepto de tablas virtuales, objetos clase y method dispacher), Java (Mejorando, pero con grandes problemas de base por ser uno de los primeros intentos de interfaces modernas) C# y sus frameworks (limpiando un poco el quilombo de java pero con la dolorosa carga de ser de una empresa poco preocupada por la continuidad de sus productos y la retrocompatibilidad)

Por eso, al meterse en la creación de GUIs, es preferible o aprender esos conceptos que no son mas que formalizaciones de lo que ya sabemos, o buscar otras alternativas a una GUI (no siempre son la mejor interfaz, mucho menos en un sistema embebido)

Mirko Leonardo Serra Labán

unread,
Aug 26, 2014, 2:12:45 PM8/26/14
to embeb...@googlegroups.com
Es mi opinión que si alguien te pide clavar un clavo le des un martillo, no las llaves de la ferretería.

O como él mismo dice:
Y para mi no tiene nada que ver al codigo C que siempre use, por eso queria algo sencillo y en la linea del C. 

Todo lo que puede hacerse con signals puede hacerse con funciones. Y para alguien que viene de trabajar con C, mi criterio me indica que es mejor indicarle un camino en el que se usen funciones como respuestas a los eventos (como el viejo Borland) y dejar que si el día de mañana cambia hacia algo más complejo sea a través de la necesidad.

Mauricio

unread,
Aug 27, 2014, 3:08:55 PM8/27/14
to embeb...@googlegroups.com
A ver... una cosa que me encantaba del Turbo C++ del DOS era la ayuda.
No solo tenia una lista alfabetica y una lista por categorias, sino que cuando entrabas a la ayuda, te daba la sintaxis del comando y..... cha chan!!! un ejemplo real y 100% aplicable y funcionando !!!

Eso no lo volvi a ver NUNCA mas en ningun otro IDE. Y que no me vengan a decir lo contrario porque no es asi. O las ayudas son incompletas o rebuscadas, al final no entendes nada. Ah y encima o son ayudas web (me embola) o te hacen descargar paquetes de ayuda... dejemonos de joder... quien tiene tiempo para perder....

Saludos.

  

Mauricio

unread,
Aug 27, 2014, 3:16:28 PM8/27/14
to embeb...@googlegroups.com
Aca y ahora si puedo opinar.

Estoy 100% de acuerdo que es mas claro, intuitivo y facil escribir quitButton->OnClick = quit
Eso mismo quiero, algo asi, no romperme la cabeza. Esa linea que escribiste de que lenguaje/libreria es Mirko?

Fernando Lichtschein

unread,
Aug 27, 2014, 3:16:44 PM8/27/14
to embeb...@googlegroups.com
Eso es cierto, se extraña la ayuda. ¿Era ctrl-F1?

Lo del Turbo C/C++ es un tema de imagen, por más que uno diga que el compilador es excelente y que el lenguaje es el mismo, los alumnos ven esa pantalla y ya ni la miran. Nosotros usamos code::blocks. (no tiene ayuda de forma fácil).

Saludos.

Mirko Leonardo Serra Labán

unread,
Aug 27, 2014, 3:21:36 PM8/27/14
to embeb...@googlegroups.com
Lo más parecido a eso creo que sería el Borland C++ (es viejito, creo que no lo hacen más) pero para aplicaciones de Windows 32 bits basta y sobra.

Y de hecho, uno ni siquiera hará:
quitButton->OnClick = quit;
Aunque se puede.

Uno lo seteará desde la interfaz gráfica o hará un doble click en el botón y eso te deja poner una función.

---

La ayuda de los Borland de DOS era genial. Yo aprendí a programar en Turbo Pascal solo con la ayuda y sabiendo muy poco inglés.


Turconi Gmail

unread,
Aug 27, 2014, 3:27:46 PM8/27/14
to embeb...@googlegroups.com

Lo siguen haciendo bajo la denominación C++ Builder XE6 http://www.embarcadero.com/products/cbuilder

 

Tenes versiones mas viejas tambien…. Pero es casi igual al Borland C++ 6.0 pero muy mejorado la IDE…

Yo lo use a veces y el RAD Studio te trae Delphi y algunas cosas mas … es un fierro…

 

Lo podes conseguir en la web craqueado logico o pagarlo … como siempre ..

 

 

 


Mauricio

unread,
Aug 27, 2014, 3:43:20 PM8/27/14
to embeb...@googlegroups.com, flicht...@ort.edu.ar
No se sobre code::blocks, pero yo con solo nociones de C leyendo un libro de Anaya Multimedia, y usando Turbo C++ y su ayuda, aprendí de forma autodidacta y por hobbie en 6to año de la escuela técnica.
Cuando entre a la universidad, tuve informática 1 y 2, ahí vimos solamente C, pero el 60% de lo que nos enseñaron ya lo había aprendido solo de curosear y ejecutar los ejemplos de TC++.

Si, creo que era CTRL+F1, y no tenias que tener internet, ni bajar ningún paquete de ayuda adicional.

Saludos.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a mailto:embebidos32%2Bunsubscrib...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a mailto:embebidos32%2Bunsubscrib...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Mauricio

unread,
Aug 27, 2014, 3:46:42 PM8/27/14
to embeb...@googlegroups.com
Si si... antes las ayudas eran verdaderos maestros. 

Recuerdo que empece con la ayuda de QBasic para DOS, y me hice un programita de un robot que cortaba el cesped. Para simular los motores use el puerto paralelo de la PC.

De nuevo, habia leido un poco de Basic en el manual de la Talent MSX, y el resto lo aprendi a puro F1 en QBasic.

Por que ya no se hiceron esas ayudas tan practicas para programacion visual???

Borland C++ si se sigue haciendo, pero como todo lo bueno y bonito, no es barato, es pago...
Por eso inicie este hilo para ver si conseguia algo libre (y en lo posible multiplataforma) pero con la simpleza del Borland.


Saludos.
Guillermo 


--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a mailto:embebidos32%2Bunsubscrib...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a mailto:embebidos32%2Bunsubscrib...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es

Fernando Lichtschein

unread,
Aug 27, 2014, 3:56:41 PM8/27/14
to embeb...@googlegroups.com
Te delata un poco tu edad...

Mauricio

unread,
Aug 27, 2014, 10:09:13 PM8/27/14
to embeb...@googlegroups.com, flicht...@ort.edu.ar
Jajaja y si... 36 para 37...
Soy de la vieja epoca de electronicos... hasta hice proyectos con valvulas en la universidad. 
Pero no me arrepiento, me encanta la electronica analogica, potencia y RF. Tambien trabaje con PMTs (el inverso del TRC) hice un detector de muones provenientes del espacio.

Mauricio

unread,
Aug 27, 2014, 10:20:07 PM8/27/14
to embeb...@googlegroups.com
Volviendo al ejemplo de ayuda de Qt:

Miren esta pagina de ayuda de ejemplo:

 A ver... hello Johny...

O se van al extremo de solo hacerte el Hello World (que lo odio) o se zarpan como en Qt mostrandote un ejemplo ya hecho por un huevon que ya sabe como 
el de este ejemplo que se llama:    "A twitter client with 3D effects..."  
   para chabon!!! de que me sirve ese ejemplo si yo quiero empezar de a poco a aprender!!

Lo que me gustaria encontrar son ejemplos sencillos y crecientes en complejidad pero progresivamente. 

Ejemplo, lo que quisiera es alguna combinación de lenguaje+IDE, donde me enseñen a:

1- Crear una ventana simple (no multiple)
2- Crear controles y botones
3- Crear cuadro de graficos
4- Aprender a hacer un grafico Sen(x) en el cuadro de grafico
5- Aprender a hacer un control deslizante para amplitud y uno para frecuencia para el grafico se(x)
6- Aprender a relacionar los botones con el grafico. Ejemplo un boton que borre el grafico y lo reinicie.
7- Hacer un boton para guardar los valores del grafico en un excel o csv.
8- abrir una subventana por ejemplo con la ayuda y el acerca de el programa
9- aprender a capturar una entrada de puerto USB o serial y almacenarla para luego mostrarla
10- Etc.... puede ser cualquier cosa, pero por separado y con ejemplos sencillos y compilables al instante 

En fin, ir paso a paso, un tutorial asi quiero, y me canse de buscarlo y no hay.

Despues aprendere de a poco POO y eso sera otro cantar. Pero lo que he necesitado varias veces ha sido hacer iterfaces graficas y nunca pude, salvo con LabVIEW que es otra cosa, es pago, y lo use solo en empresas que compraron los respectivos DAQ.

Ahora en la empresa queria hacer una interface re chota, que muestre 7 LEDs en pantalla, y que leyera el RS-232 de una PC.
La info venia de unos teclados de TV, cuando el operario presionaba una tecla se ecenderia un LED en la pantalla, y si presionaba la secuencia incorrecta se encendia un LED rojo y mostraba un cartel. Algo simple mono-ventana, y no lo pude hacer.

Es frustrante que no haya un termino medio para hacer este tipo de aplicaciones instrumetales si asi se lo quiere llamar.


Mauricio N. Melocchi Abdala

unread,
Aug 27, 2014, 10:21:10 PM8/27/14
to Alvaro Denis Acosta Quesada, embeb...@googlegroups.com
Te agredezco Alvaro, pero mira, estuve viendo los screenshots que me mandaste. 
Mira el segundo y tercero, si te fijas, son ejemplos de programas complejos ya hechos.

A mi lo que me sirve son ejemplos sencillos y crecientes en complejidad pero progresivamente. 

Te doy un ejemplo, lo que quisiera es alguna combinacion de lenguaje+IDE, donde me enseñen a:

1- Crear una ventana simple (no multiple)
2- Crear controles y botones
3- Crear cuadro de graficos
4- Aprender a hacer un grafico Sen(x) en el cuadro de grafico
5- Aprender a hacer un control deslizante para amplitud y uno para frecuencia para el grafico se(x)
6- Aprender a relacionar los botones con el grafico. Ejemplo un boton que borre el grafico y lo reinicie.
7- Hacer un boton para guardar los valores del grafico en un excel o csv.
8- abrir una subventana por ejemplo con la ayuda y el acerca de el programa
9- aprender a capturar una entrada de puerto USB o serial y almacenarla para luego mostrarla

En fin, ir paso a paso, un tutorial asi quiero, y me canse de buscarlo y no hay.
O se van al extremo de solo hacerte el Hello World (que lo odio) o se zarpan como en Qt mostrandote un ejemplo ya hecho por un huevon que ya sabe:

A twitter client with 3D effects... para chabon!!! de que me sirve ese ejemplo si yo quiero empezar de a poco a aprender!!

Espero que me hayas entendido la idea.

Gracias y un abrazo.




2014-08-27 15:18 GMT-03:00 Alvaro Denis Acosta Quesada <adac...@estudiantes.uci.cu>:
Que tal Mauricio:
Con todo respeto cuido con ese comentario(debajo) que va a provocar otro flameware jeje, mira te dejo unas capturas de qtcretor(ide de Qt), y trata de ver la mayor cantidad de detalles:
Ejemplos, tutoriales, videotutoriales, comunidad online de qt(como embebidos32 pero ... welcome to qt...), y para que tengas idea hata que punto dentro de los ejemplos puedes encontrar vidoejuegos, navegadores web, repodutores de video, editores de texto, ... y mucho mas. Con todo respeto, lanzate a Qt, pero cuidado que si te enganchas mas nunca te safas.

Cordial saludo y disculape por mi otrografia ggg.




A ver... una cosa que me encantaba del Turbo C++ del DOS era la ayuda.
No solo tenia una lista alfabetica y una lista por categorias, sino que cuando entrabas a la ayuda, te daba la sintaxis del comando y..... cha chan!!! un ejemplo real y 100% aplicable y funcionando !!!

Eso no lo volvi a ver NUNCA mas en ningun otro IDE. Y que no me vengan a decir lo contrario porque no es asi. O las ayudas son incompletas o rebuscadas, al final no entendes nada. Ah y encima o son ayudas web (me embola) o te hacen descargar paquetes de ayuda... dejemonos de joder... quien tiene tiempo para perder....

Saludos.


VII Escuela Internacional de Verano en la UCI del 30 de junio al 11 de julio de 2014. Ver www.uci.cu

Sebastián Escarza DCIC

unread,
Aug 27, 2014, 11:05:32 PM8/27/14
to embeb...@googlegroups.com

Hola, por ahí ya lo mencionaron, a mi juicio no es para aplicaciones finales ni profesionales, pero podes darle un vistazo a processing.org. Es un IDE basado en Java para prototipado de interfaces y lo he usado leyendo datos por un puerto serie (que me enviaba un Arduino). Está orientado a tener prototipos andando con pocas líneas de código y es muy útil para presentar una interfaz de usuario muy rápidamente (de hecho comparte la filosofía de Arduino).
En la web hay numerosos ejemplos de variada complejidad... y si bien detrás del lenguaje hay POO, yo creo que se puede usar y aprender de los ejemplos sin dominar en detalles los conceptos de la orientación a objetos. No se si será lo que estás buscando, pero espero que sirva. Saludos!

Alvaro Denis Acosta Quesada

unread,
Aug 28, 2014, 12:08:43 AM8/28/14
to Mauricio N. Melocchi Abdala, embeb...@googlegroups.com
Que tal Mauricio, supongo que dirás que no haz encontrado :), te propongo dos nuevos caminos,
ninguno tiene un indice con los pasos que especificas pero irás avanzando poco a poco:
El primero(en ese orden):
how_to_play_text1.png
how_to_play_text2.png
how_to_play_text3.png

El segundo:
how_to_play_text4.png

Si seleccionas "APRENDA      QT4      DESDE      HOY      MISMO     " trabajarás en C++:
Primer ejemplo:
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv){
  QApplication a(argc,argv);
  QLabel l("Hola mundo");
  l.show();
  return a.exec();
}

Si seleccionas "Introduction to Application Development with Qt Quick" trabajarás
en javascrip pero con un modelo de cajas("todo" es un rectangulo) muy parecido a html/xhtml si lo haz visto.
Primer ejemplo:
import QtQuick 1.1
Rectangle {
  width: 360
  height: 360
  Text {
    anchors.centerIn: parent
    text: "Hello World"
  }
  MouseArea {
    anchors.fill: parent
    onClicked: {
      Qt.quit();
    }
  }
}


Trata de encontrar estos tutos por internet si te parecen interesantes
comienza a leer y cada vez que tengas un problema o duda me pasas
un privado(adac...@estudiates.uci.cu) a ver si te ayudo :)

Saludos.
how_to_play_text1.png
how_to_play_text2.png
how_to_play_text3.png
how_to_play_text4.png

Andres Cassagnes

unread,
Aug 28, 2014, 7:03:14 AM8/28/14
to embeb...@googlegroups.com
No puedo despegarme de mi esencia ingenieril.  Nuevamente te recomiendo que te des un tiempo para mirar las herramientas que te proponemos en vez de esperar por una solución mágica. No existen tutoriales "a medida", pero podes buscarle la vuelta para armartelos vos. Al menos por mi parte, todo lo que se de QT, wxWidgets, java y prácticamente todo lo que se de POO fue por buscar información por mi cuenta, leer, y principalmente hacer cosas, bajarme las herramientas y probarlas. Tanto Qt como wxWidgets te permite armar la ventana gráficamente y luego con un doble-click o similar (o sea, hacer click derecho y seleccionar alguna opción) en un elemento ir a sus funciones para reaccionar ante eventos. Y de los dos hay mucha info dando vueltas.
Te dejo una wiki con una serie de tutoriales sobre wxWIdgets donde va desde ese hello World que odias (pero es importante, te enseña a poner un boton y asignarle una función) hasta a dibujar en pantalla. 


Negándote no vas a poder avanzar mucho.



Santiago Pérez

unread,
Aug 28, 2014, 7:38:59 AM8/28/14
to embeb...@googlegroups.com
Se abrieron dos hilos ahora del mismo tema, espero estar respondiendo al correcto.

Creo antes que nada hay que fijarse a donde lo vas a correr. Hablamos de Qt y otros, pero por ejemplo para Qt necesitas un Linux sobre el que corra. No recuerdo en los primeros post si mencionaba algo sobre la plataforma, pero si el micro está pensado para correr un OS, sería bueno buscar una librería que corra sobre él. Si no se le va a instalar un OS (porque no lo soporta o porque no se requiere), definitivamente Qt no sería el indicado y habría que buscar alguna librería más sencilla al estilo "Borland", por decir de alguna manera.

Si uno se introduce en el mundo de las GUI que corren sobre OS... no queda otra que meterse en el mundo de OOP y derivados, con los conocimientos que implican generar y las herramientas disponibles para tal. Particularmente mi experiencia es que no es tan difícil hacer algo simple en C++ y con alguna librería/framework como Qt. Tiene su curva de aprendizaje, por supuesto, pero es posible. Ahora bien, si se quiere explotar todo el potencial que un lenguaje OOP posee como C++, eso si requiere más estudio y tiempo dedicado... creo es posible ir de menos a más.

Mis "two pennys"...

Saludos!

--
Atentamente//With best Regards/Mit freundlichen Grüßen

Santiago Pérez
Ingeniero Electrónico

pere...@gmail.com
Córdoba, Argentina.

Guillermo Enrique VIDES

unread,
Aug 28, 2014, 7:45:27 AM8/28/14
to embeb...@googlegroups.com
Mauricio:

No insistas en aprender una tecnologia solamente a traves de un Ide.Esos ejemplos que pedis los podes encontrar simplemente googleando. La comunidad de QT es inmensa y hay mucha gente que pone tutoriales en blogs. 

Yo soy mucho mas dinosaurio que vos pero no puedo negar los avances en la tecnologia de software de los ultimos años. Quiza el lenguaje C++ no cambio mucho (STL que no es la gran cosa), lo que si avanzaron son los modelos de programacion. Desde luego estos avances son imprescindibles en grandes proyectos de software, donde hay grupos de desarrollo, etc. En proyectos personales es logico que uno se aferre a lo que conoce y chau.
 

Date: Thu, 28 Aug 2014 08:03:09 -0300
Subject: Re: [embeb32] Re: Programacion de interfaces graficas
From: andre...@gmail.com
To: embeb...@googlegroups.com

Guillermo Enrique VIDES

unread,
Aug 28, 2014, 7:50:11 AM8/28/14
to embeb...@googlegroups.com
QT es multiplataforma: Windows, Linux, Mac e incluso Android.


Date: Thu, 28 Aug 2014 08:38:55 -0300
Subject: Re: [embeb32] Programacion de interfaces graficas
From: pere...@gmail.com
To: embeb...@googlegroups.com

Santiago Pérez

unread,
Aug 28, 2014, 7:51:14 AM8/28/14
to embeb...@googlegroups.com
Claro, pero si o sí necesitas un OS.

--
Atentamente//With best Regards/Mit freundlichen Grüßen

Santiago Pérez
Ingeniero Electrónico

pere...@gmail.com
Córdoba, Argentina.


Sebastián Zaffarano

unread,
Aug 28, 2014, 8:02:24 AM8/28/14
to embeb...@googlegroups.com
Mauricio, me tomo la libertad de responderte sobre algo más general que programar una UI gráfica (puntualmente de Qt es poco lo que conozco).  Creo que tendrías que separar lo que es una IDE de desarrollo de lo que es la librería, lenguaje, paradigma de programación o metodología de desarrollo que querés aprender o con la cual querés trabajar.  

Aprender algo pegado a una herramienta no es bueno.  Las herramientas cambian, evolucionan, se discontinúan, se reemplazan por otras, etc., y corres el riesgo de, o bien estancarte en la misma herramienta, o bien que lo que aprendiste no te sirva ante un cambio de IDE o peor aún, una actualización de una misma IDE.

Desde mi experiencia, te diría que encares el tema no buscando ejemplos (que por lo que veo, querés que sean a medida de tus necesidades), sino buscando documentación, conociendo la librería, y luego, eso solo te va a llevar a hacer vos tus, llamémosle, ejemplos o pruebas o prototipos.  Eso te va a permitir encarar la problemática desde otro enfoque mucho más flexible como para que cuando necesites investigar un tema no dependas de una ayuda puntual de una IDE.

Un saludo.


Sebastián


Mauricio

unread,
Aug 28, 2014, 9:22:51 AM8/28/14
to embeb...@googlegroups.com, s...@cs.uns.edu.ar
Muy interesante Sebastian. Mire unos ejemplos y se ve que se hacen cosas complejas con pocas lineas, y muy C.

Gracias. 

Mauricio

unread,
Aug 28, 2014, 9:24:50 AM8/28/14
to embeb...@googlegroups.com, mnmel...@gmail.com, adac...@estudiantes.uci.cu
Gracias Alvaro.

El ejemplo de "Hola mundo" que pasas abajo en C+++, parece mucho mas sencillo que en otros entornos de desarrollo.

Mauricio

unread,
Aug 28, 2014, 9:31:22 AM8/28/14
to embeb...@googlegroups.com
Andres, por lo que surfee el tutorial parece bueno y bien explicado. No es que odie el hello world, lo que odio son los tutoriales que o bien te enseñan solo el hello world y te dicen que de ahora en mas tener mucho para hacer, o bien los tutoriales que pasan del hello world a una aplicacion que envia emails...

Y lo mio no es negación, es cansancio. Yo no vengo de software, y hace unos años la programacion no era tan rebuscada ni abstracta, y estaba mas accesible a otras areas de la ingenieria.

Saludos y gracias por el tutorial.

Santiago Pérez

unread,
Aug 28, 2014, 9:57:17 AM8/28/14
to embeb...@googlegroups.com
Hablando como electrónico: el software a tomado tanta dimensión hoy en día que ya no es simplemente un big loop con lectura de algunos registros y escritura de otros. Creo tiene que ver con la inmensa disponibilidad de hardware potente que ha requerido el desarrollo de herramientas acorde. Esto ha llevado prácticamente a la subdivisión del desarrollo de software... no es lo mismo el especialista en drivers de bajo nivel sin OS o con OS, el especialista en control, el especialista en GUI, especialista en protocolos de comunicaciones... tareas que estamos (me incluyo) a hacer una sola persona. Cada área ha tomado tal dimensión y exigencias (la disponibilidad de interfaces gráficas tan potentes en smartphones por ejemplo nos ha jugado muy en contra en este tema...) que ya no puede ser abarcado por una única persona.

Creo las nuevas realidades nos cuesta mucho a nosotros mismos entenderlas y aceptarlas, mucho más transmitirlas a los directivos y muchisimo más en tiempos donde las empresas no tienen el tiempo/dinero para invertir, ya sea en justamente tiempo de desarrollo/capacitación o personal.

Debemos convencernos primero nosotros de la complejidad del software actual en primera instancia y que si, por ejemplo, queremos hacer una interfaz "copada" con renderizaciones en 3D, no tenemos otra opción que usar las herramientas acordes con todo lo que ello implica...

Solo una opinión, saludos!

Santiago

--
Atentamente//With best Regards/Mit freundlichen Grüßen

Santiago Pérez
Ingeniero Electrónico

pere...@gmail.com
Córdoba, Argentina.


Mauricio

unread,
Aug 28, 2014, 9:57:53 AM8/28/14
to embeb...@googlegroups.com
Esta bien, por todo lo que he leido, a mi por ahora me alcanzaria con aprender a usar una libreria grafica.

Creo que voy a comenzar por GTK+ usando C (no C++ todavia). Ya que supongo que como GIMP esta hecho con GTK, y a GIMP yo lo conozco y uso desde el año 2000... pienso que es una libreria que se va a seguir usando y va a estar activa por mucho tiempo.

Para los ejemplos sencillos que he mencionado anteriormente como hacer un probador de teclados por puerto serie, creo que con C mas GTK+ me sobra.

Saludos,
Mauricio.

Daniel Romero

unread,
Aug 28, 2014, 10:11:18 AM8/28/14
to embeb...@googlegroups.com
Mauricio, en c# .NET express o en vb.NET express está lleno de ejmplos en la web de lo que pedís abajo.
Además es muy simple:
1- Crear una ventana simple. Viene por default.
2- Crear controles y botones. Se arrastran de caja de herramientas directamente a la ventana. Simple.
3- Crear cuadro de gráficos. En la caja de herramientas hay un control que se llama chart que resuelve cualquier gráfico de manera muy profesional, con estilos tipo excel. Podés encontrar buenos tutoriales de esto en sitios como el Guille.
4- Aprender a hacer un gráfico Sen(x). Si ves un tutorial de cómo crear cuadros de gráficos esto te va a parecer trivial.
5- Aprender a hacer un control deslizante para amplitud y ... En .Net los buscas en el cuadro de herramientas y los tiras en la ventana. Muy fácil.
6- Aprender a relacionar los botones con el gráfico. Click en los botones que creaste desde la caja de herramientas y automáticamente te lleva al código del evento de ese botón hay escribís el código que te interese. Vas a encontrar toneladas de código en la web sobre eso.
7- Hacer un botón para guardar los valores del gráfico en un excel o csv. En el cuadro de herramientas hay un objeto que se llama filedialog o algo así que con tres líneas de código abre una archivo y podes guardar lo que quieras en el formato que quieras. También hay mucho código dando vuelta en la web.
8- Abrir una subventana... Para esto posee un Wizar al inicio durante la elección del tipo de proyecto y lo hace sólo.
9- La del puerto USB te la debo, pero para el serial existe el objeto serialport que también con tres líneas de código estás haciendo todo lo que necesitas.
.NET es muy fácil de usar y muy poderoso y está especialmente diseñado para que lo uses en windows y tenes cientos sino miles de ejemplos para todos lo gustos. Me parece que cuadra perfecto con lo que necesitas.
Hace un año hice un programa para ensayar probetas a compresión que tomaba la carga de una celda de carga a través de un indicado y un calibre digital ambos con salida serie. Grafiqué en tiempo real una variable en función de la otra y marcaba el punto máximo, además guardaba los datos en un archivo .txt y podía traerlos devuelta para rearmar el gráfico, también podía imprimir. Esto en .NET me llevó 2 días de programación y en ese momento no conocía como usar el objeto chart y tuve que bucear en la web un rato. Es realmente muy fácil de usar. Buscá algunos ejemplos en la web sobre C# y te vas a dar cuenta que es muy sencillo y se ajusta muy bien a tus necesidades.

Saludos.

Fernando Lichtschein

unread,
Aug 28, 2014, 10:25:55 AM8/28/14
to embeb...@googlegroups.com
Antes de comentar sobre .NET, querría comentar cuál es el problema que veo con la programación gráfica sobre todo en PCs para gente como los que estamos en este grupo.
El tema que nos reúne es el diseño y programación de sistemas embebidos, con requerimientos de programación que están más cerca del mundo físico que nos rodea que del usuario, aunque cada vez más aparece la necesidad de interfaces humanas. Yo soy un aficionado entusiasta y no un profesional pero tengo que diseñar programas de formación y me topo cada tanto con tener que hacer que el sistema embebido de comunique con una PC, y ahí caemos en los QTs, WxWidgets y GTKs.

La otra razón es tratar de amienizar un poco el aprendizaje de programación, los alumnos ven que hay juegos, aplicaciones, etc. con un diseño espectacular de gráficos, pantallas, botones, etc. y nosotros los ponemos a "escriba un programa que lea dos número por teclado y muestre la suma por pantalla"... Frustrante.

También querríamos hacer un programa sencillo, preferentemente en C (porque es lo que usamos para los micros) que le permita mostrar en pantalla un valor que está produciendo el sistema embebido, o cambiar otro con un botón o un "slider". Ninguno de estos "frameworks" lo hace fácil.

Respecto a .NET, me pareció muy fácil de usar pero es complejo el "packaging". Antes (soy viejo) uno compilaba un programa, se generaba el ejecutable y ese ejecutable se llevaba a cualquier PC (en un diskette) y se ejecutaba. Ahora .NET requiere armar un instalador con vaya uno a saber qué herramienta, instalarlo y ejecutarlo siempre y cuando la PC destino cumpla con quinientos requisitos como por ejemplo la versión de .NET, de la cual hay muuuuchas.

Ahi fueron mis dos centavos.

Saludos,

Fernando

Daniel Romero

unread,
Aug 28, 2014, 11:33:46 AM8/28/14
to embeb...@googlegroups.com
.NET evolucionó mucho en el tema package en las últimas versiones, la aplicación de empaquetado está en el mismo visual studio de forma totalmente integrada, es fácil de usar y de configurar, te permite elegir los archivos que irán dentro del empaquetado, incluso podés agregar el framework que utilizaste dentro del empaquetado. Podés darle una dirección de servidor donde están los paquetes y hacer que los archivos se instalen desde la web con un ejecutable pequeño. El precio que pagas son empaquetados enormes o una conexión muy rápida.

Saludos.

Andres Cassagnes

unread,
Aug 28, 2014, 11:35:02 AM8/28/14
to embeb...@googlegroups.com
En ese sentido wxWidgets o incluso QT permiten hacer compilación estático y generar un ejecutable directamente

Alvaro Denis Acosta Quesada

unread,
Aug 28, 2014, 12:55:09 PM8/28/14
to embeb...@googlegroups.com
Hola todos.
flameware Qt vs .Net? no please...
Ya este hilo ha dado bastante y si Mauricio dice: "Creo que voy a comenzar por GTK+ usando C (no C++ todavia)." es porque le pareció familiar a lo que conoce, creo que queda por terminado a menos que le surja otra duda y quiera consultar pero los comentarios sobre comparaciones más profundas quedan fuera de ayudarlo a comenzar con algo básico, yo tengo mi propia opinión como muchos pero si cada uno hace esto... capún flameware ...
Salu2s.

Mauricio

unread,
Aug 28, 2014, 1:45:20 PM8/28/14
to embeb...@googlegroups.com, dro...@flexar.com.ar
Hola Daniel,

Al parecer y por lo que me contas, me resolviste la existencia con esto jajaja
Bueno ya habia bajado el Visual Studio 2008 Express, ahora voy a bajar el C#.NET, lo pruebo y te mantengo al tanto.

"Hace un año hice un programa para ensayar probetas a compresión que tomaba..."   es justamente ese tipo de programas que he querido hacer, como ingeniero en electronica son esas las cosas que comunmente hacemos. No necesito base de datos ni demasiadas ventanas.

Esta bien, espero que resulte. Ahora tengo por lo que veo dos o tres opciones para empezar: 

C#.NET
C mas GTK+
Process
C mas Allegro


Saludos.

Mauricio.

Mauricio

unread,
Aug 28, 2014, 1:49:10 PM8/28/14
to embeb...@googlegroups.com, flicht...@ort.edu.ar
Y si Fernando, lo que contas del packaging y las versiones de .NET es cierto. 
Como todo supongo que no existe la solucion perfecta. Quizas se podra hacer un instalador "portable" y listo.

"cada tanto con tener que hacer que el sistema embebido de comunique con una PC,"   Yo tambien !!! por eso justamente abri este hilo !!

Saludos.

Guillermo Enrique VIDES

unread,
Aug 28, 2014, 6:33:30 PM8/28/14
to embeb...@googlegroups.com
Mauricio,

Tal vez aqui encuentres cierto sesgo hacia determinadas tecnologias (Open Source, Linux, librerias multiplataforma Open Source) y es logico ya que estas tecnologias son las aplicables tanto en PC como en sistemas embebidos y al fin y al cabo como su nombre lo expresa es un foro de sistemas embebidos. Hacer ciertas cosas en embebidos con plataforma Wintel es 


Date: Thu, 28 Aug 2014 10:45:20 -0700
From: mnmel...@gmail.com
To: embeb...@googlegroups.com
CC: dro...@flexar.com.ar

Subject: Re: [embeb32] Re: Programacion de interfaces graficas

Reply all
Reply to author
Forward
0 new messages