principal
nivel superior
enviar artículo
buscar
administrar
acerca de ...
rdf
rss
main
|
Posted by angolero on Friday June 26, @06:59PM el 2009
from the dept.
Hola a todos
angolero
Pues bueno después
de mucha talacha poco a poco van surgiendo las posibilidades sobre la
interacción entre Qt y Coin, la cual al parecer es de lo mas prolija
posible, en fin, Qt se encuentra construido en base al patrón
modelo/vista, así que el diseño antes implementado (es decir
nuestro diseño), se ve fácil de migrar a Qt, el problema hasta
ahora a sido la necesidad de aprender Qt para lograrlo!!!, así que
una ves mas me encuentro aprendiendo otra librería, en fin, la cosa
marcha así que pongo el primer ejemplo para que vean lo cerca que
estamos de migrar todo por fin, y de las bellas posibilidades de Qt,
el cual recordemos corre en Mac. Windows y claro Linux.
El problema es que Qt usa
una pequeña
aplicación interna para pegar algunos pedazos de código al código
normal c++, y me encuentro un poco atorado sobre como usarla, es
decir, siendo sincero, apenas me di cuenta de su existencia al tratar
de resolver un problema de funcionamiento del código, básicamente
podemos ver en la muestra que mando que los botones no funcionan,
aunque su funcionamiento esta inscrito a la perfección dentro del
código, y de allí el descubrimiento del paso que falta en la
compilación.
Como sea gracias a este
mecanismo, la
funcionalidad de los botones queda inscrito dentro del loop
principal, con lo cual nos ahorramos toda la talacha especifica de
windows que era el principal problema que nos retenía; recordando un
poco, me refiero a que los botones se trabaran al usar de manera
masiva la vista, lo cual fue resuelto reescribiendo el loop principal
de windows dentro de la ventana de sowin.
Lo bueno de todo esto es
que el código
en si es trivial de escribir (ya que se como jajaja), solo tengo que
descifrar la manera de compilar específicamente con las herramientas
Qt.
Una ves logrado esto, por
fin viene la
prueba final al migrar por completo lo que falta de la aplicación a
linux, para luego modificar un poco la vista ya existente para dejar
por fin, un visualizador genérico, en donde se especifican formas a
variadas a graficar y se anexan botones según el gusto y la
necesidad.
Suerte a todos, y por favor
prueben el
codigo en sus maquinas, para ver como funciona.
V.
P.D. El comando para la
compilación
es:
g++ -Wall -I
/usr/include/boost/thread/
-I/usr/include/Inventor/annex -D_REENTRANT -I/usr/share/qt4/include
-I/usr/share/qt4/include/Qt -I/usr/share/qt4/include/QtGui main.cpp
/usr/lib/libboost_thread.so -lSoQt4 -lQtOpenGL -lQtGui -lQt3Support
-lXmu -lXi -lCoin -lGL -lXext -lSM -lICE -lX11 -ldl -lpthread -lm -o
main
Y el archivo esta
anexado en este
mensaje.
P.D.2. Para tener esto
funcionando, si no tienen las librerias instaladas es
cosa que vean un par de poost anteriores donde menciono las librerías
a instalar, aca esta el Link. Les recuerdo que el ejemplo es multithread, con Qt y Coin todo juntito.
<
desde el fondo del abismo
|
The Doctor Is In
>
|
|
The Fine Print: The following comments
are owned by whoever posted them.
( Reply )
|
Re: reporte
by jergas on Saturday June 27, @04:18PM
|
hola vianagan!
hecho! compila sin queja alguna, y como el otro demo, corre con muy poca carga de recursos a la maquina.
bueno, corre y funciona. sobre los botones, todos los botones default funcionan (bueno, no probe todos, pero los que probe funcionan), asi que supongo que los botones que no deben funcionar son los etiquetados boton1-boton4. en esos se ve el click, pero no pasa nada. en el campo de texto que esta arriba de esos botones, si me deja editarlo, no se si deberia hacer algo mas.
Panx y Ernesto: de nuevo les insisto, instalen las librerias que pidio Vian y prueben que los demos compilan en sus maquinas (en linux, obviamente). porfas no dejen pasar mas tiempo. Vianagan, ya le pedi a Vic que te ayude con la instalacion de linux de tu lapi, asi que ponte en contacto con el, y porfas, una vez que tengas esa instalacion, tu tambien ve instalando nuestro stack de desarrollo; tambien te insisto con lo del subversion en sf.
pues muy bien! muchas gracias! me da mucho gusto ver que hay avances.
un abrazo,
jergas
|
[
Reply to this ] |
Re: reporte
by jergas on Tuesday June 30, @02:33PM
|
Por cierto, por favor hechenle un ojo a
este
documento sobre Boost.Python.
|
[
Reply to this ]
|
|
Re: reporte
by ernesto on Wednesday July 01, @01:17PM
|
OK! Salgo de casa en 20 minutos, pero mañana empiezo por probar el código. Perdón por dejar pasar esto :-/
Saludos,
Ernesto
|
[
Reply to this ] |
Re: reporte
by ernesto on Friday July 03, @06:03AM
|
Bueno,
No puedo decir que fue fácil, pero ya compilé y corrí main.cpp. En cuanto al funcionamiento, observo lo mismo que Edgar: Todo jala lindo excepto los botones 1-4. Por cierto, ¿Alguien notó que si se expande la gui a pantalla completa se triplican los visualizadores, y funcionan independientemente?
En cuanto a la compilación, he aquí lo que intenté y los resultados obtenidos. Espero que esto ayude a explicar los warnings que recibí cuando finalmente tuve éxito.
- Primero traté de correr el comando de compilación tal cual lo mandó Vian. El resultado fue:
"bash: g++: command not found"
Como se imaginarán, esto no me gustó nada.
- Tras comprobar que si tengo g++ en la máquina, me pregunté si el problema sería que debía compilar mediante gcc (corríjanme si me equivoco, pero según entiendo "gcc" es una colección de compiladores que incluye uno para c++). Usé el mismo comando, pero sustituyendo g++ por gcc. El resultado fue:
"gcc: error trying to exec 'cc1plus': execvp: No such file or directory"
- Tras buscar respuestas en línea (sin éxito), me puse a probar lo que se me ocurrió. Lo que funcionó fue usar el comando de compilación, pero usando g++ con todo y su versión (cuando trabajaba en la mac, esto resolvió un problema con python). Lo que teclee fue:
"g++-4.1 -Wall -I /usr/include/boost/thread/ -I/usr/include/Inventor/annex -D_REENTRANT -I/usr/share/qt4/include -I/usr/share/qt4/include/Qt -I/usr/share/qt4/include/QtGui main.cpp /usr/lib/libboost_thread.so -lSoQt4 -lQtOpenGL -lQtGui -lQt3Support -lXmu -lXi -lCoin -lGL -lXext -lSM -lICE -lX11 -ldl -lpthread -lm -o main "
Finalmente compiló, aunque arrojó las siguientes advertencias:
"main.cpp: In constructor ‘MyMainWindow::MyMainWindow()’:
main.cpp:104: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’
main.cpp:107: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addLayout(QLayout*, int)’
main.cpp:110: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’
main.cpp:112: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’
main.cpp:118: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’
main.cpp:123: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’
main.cpp:125: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’
main.cpp:127: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’
main.cpp:129: warning: passing ‘double’ for argument 2 to ‘void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)’"
Me pregunto que versión de "g++" tienen, y si esto tendrá que ver con los warnings que recibo. Tampoco me queda claro si soy el único que los recibe. ¿Alguna pista? En fin, ya me dirán...
Saludos a los dos!
Ernesto
Pd. Tengo una pregunta pedestre. ¿Cómo hago para desplegar citas (como las de los warnings) sin que se me descomponga el formato?
|
[
Reply to this ] |
Re: reporte
by Victor Martinez on Friday July 03, @08:08AM
|
Mételas entre etiquetas pre de html [pre]logs[/pre] obvio no puedo usar mayor y menor que o no lo presentaría.
Saludos.
|
[
Reply to this ]
|
Re: reporte
by ernesto on Monday July 06, @04:47AM
|
Hola Vic,
Gracias por el tip.
Saludos.
|
[
Reply to this ]
|
Re: reporte
by angolero on Friday July 03, @08:25AM
|
Hola
1; lo que mencionas sobre la triplicacion de la vista, esta escrito asi, es decir yo lo escrivi de esa manera, solo que cuando surge la pantalla de tamaño pequeño no se alcanza a apreciar.
- con respecto a las advertencias a ninguno de nosotros las marca.
- creo que una opcion buena seria revisar que vercion tienes de g++ no me acuerdo que comando es pero es cosa de checar en la red, algo asi como g++ -version , y con ello comparar en el home de gcc si tienes uno viejo y en su caso actualizarlo.
- por ultimo todas las advertencias son del mismo tipo, que se esta truncando un doble a un tipo float lo cual en general es trivial, pero se considera un buena practica de programacion eliminar las advertencias.
Suerte
|
[
Reply to this ]
|
Re: reporte
by Victor Martinez on Friday July 03, @09:21PM
|
2.) vicm3@avalon:~$ g++ --version
g++ (Debian 4.3.2-1.1) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
[
Reply to this ]
|
Re: reporte
by ernesto on Monday July 06, @05:01AM
|
Si, me imaginé que lo de la triplicación sería intencional.
En cuanto a las advertencias, actualicé g++ a la versión que tiene Vic, y desaparecieron. Así es que la buena práctica resultó ser actualizar mi compilador (como era de esperarse, ahora también puedo compilar con gcc).
Saludos,
Ernesto
|
[
Reply to this ]
|
Re: reporte
by jergas on Thursday July 16, @08:02AM
|
Por cierto, creo que la razon por la que el comando g++ no funcionaba era una liga rota. Para saber mas sobre ligas en el sistema de archivos echale un ojo a info ln o man ln . El caso es que varios programas usan ligas a sus ejecutables para poderse invocar con varios nombres (para varios usos distintos) o para esconder todo el rollo de las versiones.
|
[
Reply to this ]
|
|
The Fine Print: The following
comments are owned by whoever posted them.
( Reply )
|
|