Advertisement
Bienvenido a Squishdot Reportes Anuncios Debian Ciencia Linux
 principal
 nivel superior
 enviar artículo
 buscar
 administrar
 acerca de ...
 rdf
 rss
 main


reporte
Reportes 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  >

 

Related Links
  • Articles on Reportes
  • Also by angolero
  • Contact author
  • File Attachment
  • Click to download attachment main.cpp
    5KB (5145 bytes)

  • 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.

      1. con respecto a las advertencias a ninguno de nosotros las marca.
      2. 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.
      3. 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 )

    Powered by Zope  Squishdot Powered
      "Any system that depends on reliability is unreliable." -- Nogg's Postulate
    All trademarks and copyrights on this page are owned by their respective companies. Comments are owned by the Poster. The Rest ©1999 Butch Landingin.
    [ home | post article | search | admin ]