INTRODUCCIÓN AL QT CREATOR

download INTRODUCCIÓN AL QT CREATOR

of 13

Transcript of INTRODUCCIÓN AL QT CREATOR

  • INTRODUCCINALQTYALQTCREATORUNIVERSIDADDELCAUCA

    Profesor:OscarAndrsVivasAlbnEl frameworkQt vio la luz pblica en el ao 1995. Fue desarrollado por dos ingenieros noruegos,HaavardNord y EirikChanbleEng, como respuesta a lanecesidaddedisponerdeunGUIparaunaaplicacin C++multiplataforma orientado a objetos. Estos ingenieros fundaron la compaaQuasarTechnologiesen1994,nombrequefueevolucionandohastaconvertirseenTrolltech.TrolltechempezaofrecerQtcon la licenciaGPLapartirdelao2000,siendostagratuitaparaeldesarrollo de software libre, pero de pago para el desarrollo de software privativo (constitua unafuentedeingresosparaTrolltech).Apartirde2005aparecilaversinparaWindowsbajolicenciaGPL.Actualmente,ya razde lacompradeTrolltechporpartedeNokiaaprincipiosdelao2009,QtseofrececonlicenciaLGPL.Enlaltimadcada,Qthapasadodeserunproductousadoporunospocosdesarrolladoresespecializados,aunproductousadopormilesdedesarrolladoresopensourceentodoelmundo,porloqueelfuturodeestatecnologaeshoydamuyprometedor.Enlaversin1.0y2.2deQt,secreabanlosdilogos(diseosdelasventanas)medianteQtDesigner,ystosseconvertanacdigomediante lautilidadUIC(User InterfaceCompiler).EnestaversinyasedabasoportealmecanismoestrelladeQt(signalsyslots):elUICgenerabalosslots(virtuales)yestosseimplementabanconcdigomedianteherencia.Enlaversin3.0deQt,seincorporelmecanismodelarchivoui.h,quepermitaimplementarslotssinnecesidaddeherencia,yqueeraincluidoautomticamenteporelcdigofuentegeneradoporUIC.QtDesignertenauneditordecdigo integradoparapodereditarelarchivoui.h,yunafuncionalidad(llamadasource)paraaadirvariablese includes.TambindisponadecapacidaddecargadepluginsparadarsoporteaCustomWidgets(haciendoquefueranvisiblesenQtDesigner)einclusounparserdearchivosdeproyecto .pro.Adicionalmente, sepodan realizar conexiones aBasesdeDatos y verelcontenidode sus tablas.Porello,eraposible construirunaaplicacin completausandonicamenteQtDesigner.Sin embargo, esta aproximacin de edicin centralizadamedianteQtDesigner tena una serie decarencias,yeranlossiguientes:

    EleditordecdigodeQtDesignernodisponadefuncionesbsicas(comoporejemplo,iraunadeterminadalnea).

    Existanproblemasdesincronizacinaleditarelarchivoui.hexternamenteaQtDesigner. Noeraposiblesu integracincon IDEsexistentes,porellodesarrolladoresacostumbradosa

    otrosIDEsdebanutilizaralafuerzaQtDesignerparaprogramarenQt.Enlaversin4.0deQtsehancorregidotodasestascarencias.Dehecho,elcambiomsimportantehasidolaposibilidaddeintegracindeQtDesignerconIDEsexistentesloquederivenladesaparicindeleditordetextobsicodelquehacagalaQtDesignerensuversin3.0.Adems,QtDesignergeneraelarchivo .ui con la interfaz, y el UIC genera el cdigo para sta (similar al comportamiento de lasversiones1.0y2.2,perogenerandonicamenteunarchivo.h).Ahora, laherenciaserealizade laclaseprincipalde la interfazyde la interfazdeobjetosdeusuario,siendotodoestecdigogeneradoautomticamente.

  • QTCREATORQtCreator esun IDE creadopor Trolltechpara eldesarrollode aplicaciones con lasbibliotecasQt,requiriendo su versin 4.x. Est disponible para los sistemas operativos Linux, Max y Windows,permitiendo al desarrollador crear aplicaciones para mltiples sistemas o plataformas mviles. Laversinactualesla2.3.0.INSTALACINDEQTYQTCREATOREnelsiguientedirectorioseencuentranlosinstaladoresdeestosdosprogramas:www.unicauca.edu.co/deic/DocumentosPrimeroseinstalaQT,versin4.7.4:qtwinopensource4.7.4vs2008.exeInstalarporejemploenC:\QtSegundo sedebenaadirciertasvariablesenelentorno.ParaWindows7abrirelPaneldeControl,SistemasySeguridad,Sistemaya la izquierdadarclickenConfiguracinAvanzadadelSistema.En laventana que se abre dar click en Opciones Avanzadas / Variables de Entorno. Se abre una nuevaventanadivididaendospartes.En laparte inferior,VariablesdelSistema,clicken lavariablePathyluego en Editar. Aadir, despus de ;, la variable ;C:\Qt\4.7.4\bin (esto depende claro est dedndeseinstalQtensucomputador).UnavezhechoestosedebecompilarQtparaquefuncioneconMicrosoftVisualStudio.Paraesto,unavez se tiene instalado Visual Studio 2008, se abre el promt desde VS (click en Inicio, Todos losProgramas,MicrosoftVisual Studio 2008,Visual Studio Tools, Smbolo del sistema deVisual Studio2008).Seabreunanuevaventanaennegroconlaubicacinactual.NosubicamosenlacarpetadondeseinstalQt(parairatrsenunacarpetasepuededarcd..):C:\Qt\4.7.4\Escribirlasiguienteconfiguracindespusdeubicarnosenelsitioanterior:>configurereleasestaticplatformwin32msvc2008(luegoEnter)Elprocesodeconfiguracin tardarunoscincominutos.LuegocompilamoselprogramaparaVisualStudio,escribimos:>nmake(luegoEnter)Lacompilacintardarentredosycuatrohoras,podemostomarunapausalarga.UnavezcompiladoQTprocedemosainstalarQTCreator.Deldirectorioanteriorbajamoseinstalamoselarchivo:qtcreatorwinopensource2.3.0.exe

  • PorejemploseinstalaenlaubicacinC:\Qtcreator2.3.0CREACINDEUNASENCILLAAPLICACINSOBREQTCREATOR/QT(sinnecesidaddeescribircdigo!):

    AbrirQTCreatorycrearunnuevoproyecto:ClickenFile,NewFileorProject.Seabreunanuevaventana.En laparte izquierdaescogemosQtWidgetProject,en lapartede laderechaescogemosQtGuiApplication.ClickenChoose.Enlanuevaventanaqueseabrecolocamosnombrealproyectoysucarpetadeubicacin(nopuedentenerelmismonombre).ParaesteejemplolosnombresescogidosEjemployNuevorespectivamente.LuegoclickenNext,Next,NextyFinish.Seabre laventanadeQtCreator.Observequeen laparte izquierdasecrearon lascarpetasHeaders,SourcesyForms.Enstasencontramoslosarchivos:Headers:mainwindow.hSources:main.cpp,mainwindow.cppForms:mainwindow.uiAbrimosesteltimoarchivo,quecontienelainterfazgrficaarealizar(siemprequequeramosvolveracargar la interfaz que estamos construyendo daremos doble click sobre este archivo). Aparece unnuevoambiente,condiversosbotonesalaizquierdayenlapartesuperiorunaventanalimpiadondesecrearlainterfaznecesaria.Alanuevainterfazselepuedeaumentardetamaodandoclicksostenidoenalgunodelosbordes.Pasemoslossiguienteswidgetsdelaparteizquierdaalaventanaenlimpio,yorganicmoslostalcomolomuestralasiguienteimagen:

    TextLabel(dondedandodobleclickcolocaremosVentanadePrueba). HorizontalSlider(barradedesplazamientohorizontal).

  • SpinBox(loubicamosaladerechadelHorizontalSlider). TextEdit(loubicamosbajolosdosanteriores). PushButtonyTextBrowser(ubicadosabajo). ComboBox(ubicadoenlapartesuperiorderecha). TextBrowser(unsegundoTextBrowserdebajodelComboBox). SpinBox,DialyPushButtonenlaparteinferiorizquierda.

    Loswidgetspuedensermovidosporelformulariosolocondarclicksostenidosobreellosydesplazarelratn.Setrabajarconlosobjetosanterioresdelasiguientemanera:DobleclickenTextLabelycolocarVentanadePrueba.Enlapartederechaaparecenlaspropiedadesdecadawidget.Cambiarel tamaode la letraenFont,colocar tamao14yampliarel respectivomarcoparaqueaparezcatodoeltexto.RemarcarelHorizontalSlideryelSpinBox,quedebeestarasuderecha.Aparecernlosmarcossobrelosdoswidgets.Dar luego click sobre elbotn LayOutHorizontally, asquedarnunidos losdoswidgets(estosepuedehacerconcualquierotroparogrupodebotones,paraunamejorpresentacin).Para conectar diversas seales se da click sobre el cono Edit Signal/Slots de la parte superiorizquierda(opulsarF4).ParasalirdeestaedicindarclickenelconoEditWidgets(opulsarF3).

    TrabajarconHorizontalSliderySpinBox.UnavezpulsadoF4darclicksostenidosobreHorizontalSlider,apareceuncuadrorojosobreelwidget,ydesplazarhastaelSpinBox,quequedaenrojotambin.Seabreunanuevaventanaparadefinireltipodeconexinentrelosdosbloques.ParaelprimerosecolocavalueChanged(int),paraelsegundosetValue(int),luegoOK.LainterfazlogradasegrabaconCTRL+S.En la parte inferior izquierda aparece un botn verde de Play. Pulsamos el botn y la aplicacincompilaelprograma, informandodeerroressi loshay,comosiestuviramoscompilandobajoVisualStudio.Apareceentonces laventana resultante: sidesplazamos labarrahorizontalhacia laderechaveremosavanzarelnmeroenelSpinBoxhastaelmximoquees99(estenmeropuedevariarseenlaspropiedadesdelSpinBox).ObsrvesequeenlacarpetaNuevo(dentrodelacarpetadeQtCreatoroenlaubicacinqueselehayadado) aparecen dos carpetas ms. Una que se llama ejemplo y aparecen los archivos base delprograma,yotrallamadaEjemplobuilddesktop,dondeaparecelacarpetaReleaseydentrodestaelejecutable Ejemplo.exe. Al abrirlo igualmente aparece la pantalla resultante con la barra que sedesplazayelindicadordenmero.Hagamos ahoraotra conexin. Pulsado F4 conectamos el SpinBox con el Text Editde abajo. En laventana de configuracin de conexiones escogemos valueChanged(QString) como origen yappend(QString)comodestino.AlcompilarnuevamenteveremoscmoalcambiarlabarradeslizantetambinlosvaloresdelSpinBoxaparecenenelcuadrodetexto.

    TrabajarconelComboBoxDarclickenelComboBox,iralapartesuperiorderechadondeaparecenlosobjetosylasclases.ClickderechosobreQComboBoxy luegosobreEditComboBox.ColocarBuscarenelbotn,yadicionar

  • tresms(dandoclickenelbotn+de laparte inferior izquierda):Arriba,MedioyAbajo.Bajoestebotnsecolocun segundoTextBrowser.Vamosa realizar laconexinentreestosdosbloquesdeotramanera (en vezdeEdit Signals/Slots),esta vezdesde la ventanadeedicinde seales y slots,ubicada justodebajode la interfazque se est creando. En lapestaade Signals& Slots Editor sepuedenverlaconexinqueyaseharealizado.Aadimosunams(clickenelsigno+)yllenamoslosdatosde lascolumnasSender,Signal,ReceiverySlot.Losdatosescogidosdeunmensernrespectivamente:ComboBox,Activated(QString),textBrowser_2,insertPlainText(QString).EstoloquehaceesquealabrirelmendelComboBoxseactivalaedicindetextoenelsegundoTextBrowser.Sicompilamosveremosquecadavezquecambiamosdepalabraenelmen,staaparececomotextoenlapequeaventanabajoelmen.

    TrabajarconeldialLaideaesqueeldialvareelnmeroquemuestraelSpinBoxyqueelPushButtonasociadoborreelltimovaloranotado.Estoselograconlaadicindelasdossiguienteconexiones:dial sliderMoved(int) spinBox_2 setValue(int)pushButton clicked() spinBox_2 clear()Compilaryobservarelresultadoobtenido.

    TrabajarconelPushButtonyelTextBrowserPrimeroquetodosecambiaelnombredelPushButtonenlaspropiedades(enObjectNameyentext)porBoton1.Luegoseeditanlascorrespondientesseales:Boton1 clicked() textBrower clear()DebemosasegurarnosqueenlaspropiedadesdeesteTextBrowser,bajolapropiedaddeQTextEdit,noaparezcaactivadalacasilladeReadOnly,sinoenlaventanadeedicinnoaceptarningncarcter.Alcompilarsepuedeescribircualquiertextoenestaventana(TextBrowser)perosisepulsaelbotneltextoseborrar.Ahora haremos que adems de lo anterior, al pulsar Boton1 aparezca una ventana con un textoespecfico.ParaestodamosclicksobreBoton1yconclickderechovamoshastaGotoslot.Seabreunaventananuevayseleccionamosclicked().Seabreautomticamenteelarchivomainwindow.cpp,en el sitio que define la accin a ejecutar una vez se de click en el botn anotado. En ese sitioescribimos:QMessageBox::information(this,"TtulodelMessageBox","Botnpulsado","Aceptar");Yenlacabeceradelarchivoescribimos:#includeAlcompilardenuevoveremoselsiguienteresultado:SiescribimosalgntextoenelTextBrowser,stese borra al pulsar la tecla Boton1, caso en el cual aparece tambin una ventana que dice BotnpulsadoyunnuevobotndeAceptar.Alpulsarsesteltimodichaventanadesaparece.

  • Trabajarconelmendelaventana

    En el extremo superior izquierdo de la ventana aparece la frase Type Here. Dando doble clickpodemos introducir lapalabraMeny luegodamosEnter.Apareceentoncesnuestronuevomen.DamostresvecesTypeHerebajolapalabraMenyeditamoslostextosdemaneraqueaparezcanlaspalabras:Archivo,Guardar,Configurar.DamosclicksobreAddSeparatoryluego,bajoesalneaquemeacabadecrear,dobleclicksobreTypeHereycolocamosBorrar.Enlaventanadeedicindesealesyslotspodemosagregarlasiguienteconfiguracin:actionBorrar triggered() textEdit clear()Significaestoqueunavezcompilado,podemosescribiralgoeneleditorde textoperosiabrimoselmenydamosclickenlapalabraBorrar,eltextoescritodesaparece.

    TrabajarconimgenesPara trabajar con imgenes se debe primero que todo crear los recursos necesarios. Para estosupongamosquetenemosuna imagenen formato*.bmp (oencualquierotro formatogrfico)en lamismacarpetadondeestelproyecto,estaimagensellamarlogo_grupo.bmp.EnQTCreator,dandoclickenelconoEditdelaparteizquierda,aparecerelrboldecarpetasqueformaelproyecto,cuyonombreesEjemplo.Sidamosclickderechosobreelnombredelproyecto,aparecerunnuevomen.Damos click sobre AddNew.En lanuevaventanaqueaparecedamos clickenQta la izquierdaysobre Qt Resource File a la derecha. En la ventana siguiente le colocamos nombre, por ejemploRecursos,colocndoleelprogramalaextensin*.qrc.ClickenNextydespusenFinish.Observamosqueenel rboldelproyecto aparece ahora la carpeta Resources ydentrodeellaelarchivo Recursos.qrc.Damosdoble click sobresteltimo,apareciendoabajounaventana conelbotnAdd.Damosclicksobrelyadicionamosunnuevoprefijo(AddPrefix).Unavezestablecidoelprefijo,denuevoclicksobreAddyestavezaadiremosunarchivo(AddFiles).Estearchivoserla imagen que tenemos en la misma carpeta (logo_grupo.bmp). Luego grabamos este archivoRecursos.qrc.Vamosahoraalainterfazqueestamosconstruyendo.PasamosdelaizquierdaaladerechaunLabel.Agrandamoselcuadroqueacabamosdepasar,borramoslapalabraTextLabelqueaparecaydamosclickderecho.UnadelasformasdeincluirlafiguraesdarclicksobreChangerichtextenelmenqueacabadeaparecer.Apareceuna ventanaa laderechade la cualhayun conoque se llama Insertimage.Damosclicksobrelyapareceunaventanaquese llamaSelectResource.Escribimosa laderechaRecurso.qrcyEnter.En laventanade la izquierdaapareceprefix1,damosclicksobrelapareciendoa la izquierda la figuraasociada.DamosOKyyatendremosennuestra interfaz la figuradeseada,lacualpodemoscambiardetamaoyubicacin.CREARUNPROJECTOPARAVISUALSTUDIOQT/QTCreatorpermitedisearlainterfazgrficadelaaplicacin.Sinembargoelaccesoapuertosparaconectarhardware externo,por ejemplo,debe seguirhacindose apartirdeC++. Esto implicaquenuestra interfaz debe poder abrirse en Visual Studio como un proyecto. La herramienta que mepermiteestoesCMake,diseadaparagenerarcdigoendiversasplataformas.

  • LaltimaversindeCMakees la2.8.5 (www.cmake.org ).Labajamosdelsitioy la instalamos.Enelejemplo anterior de QT Creator supongamos que hemos creado nuestra interfaz en la carpetaC:\Qtcreator2.3.0\Nuevo.CMake trabaja con un archivo de configuracin que debe estar ubicado en la misma carpeta delproyecto, en nuestro caso en la carpeta C:\Qtcreator2.3.0\Nuevo\Ejemplo. Este archivo se llamarCMakeLists.txt. El archivo genrico es el siguiente, copiarlo en un bloc de notas y grabarlo con elnombreanotadoanteriormente:cmake_minimum_required(VERSION2.8)PROJECT(Ejemplo)FIND_PACKAGE(Qt4REQUIRED)INCLUDE(${QT_USE_FILE})INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})#EsdondelacabeceradeluisegeneraFILE(GLOBfuente_SRCS"*.cpp")FILE(GLOBUIs_SRCS"*.ui")FILE(GLOBcabecera_SRCS"*.h")SET(cabecera_Gui_SRCSmainwindow.h)QT4_WRAP_UI(UisCabecera_SRCS${UIs_SRCS})QT4_WRAP_CPP(MOC_SRCS${cabecera_Gui_SRCS})ADD_EXECUTABLE(Ejemplo${fuente_SRCS}${UisCabecera_SRCS}${MOC_SRCS}${cabecera_SRCS})TARGET_LINK_LIBRARIES(Ejemplo${QT_LIBRARIES})Luego se abre la ventana de CMake (Inicio, CMake2.8, CMake (cmakegui)). Aqu debemos dar laubicacindelasfuentesacompilarylaubicacindelacompilacin:Whereisthesourcecode:C:\Qtcreator2.3.0\Nuevo\EjemploWheretobuildthebinaries:C:\Ejemplo_builDamosclicenConfigure.UnavezterminelaconfiguracindamosclicksobreGenerate,conlocualsehabrgeneradoelcdigoparacompilaren lacarpeta indicada(C:\Ejemplo_build).EnestacarpetaabrimoselarchivoEjemplo.slnconVisualStudio.En el Explorador de soluciones dar clic enALL_BUILD, luego clic en elmen Generar, y clic enGenerar ALL_BUILD, compilndose el programa. Tener en cuenta antes de realizar esto que elconfiguradordesolucionesdeVisualStudiodebeestarenmodoRelease (ynoenDebug).ElVScrearentoncesunejecutableenlacarpetaReleasedeesteproyecto.Yapodemosaadiralproyectotodas las librerasyutilidadesnecesarias,conservando la interfazgrficacreadaanteriormenteenQTCreator.

  • CREACINDEHERRAMIENTAS3DCONVTKAunque QT permite trabajar con diferentes archivos grficos, bsicamente solo se puedendesplegarenpantalla sin funcionalidadesadicionales.Sinembargoel softwareVTK, creadoporKitware,permitelarealizacinyvisualizacinavanzadadegrficosen3D.Estaslibrerasdecdigoabiertopuedendescargarsedewww.vtk.orgode lapginadelDEIC indicadaarriba(archivovtk5.8.0.zip).Descargarydescomprimirdichoarchivo,porejemploenC:\VTK.Secrealuegounacarpetadondese ubicarn las fuentes del programa, por ejemplo en C:\VTK_build. Abrimos CMake (Inicio >Programas>CMake>Cmake(cmakegui)).Se abre la ventana de CMake, donde debemos dar la ubicacin de las fuentes a compilar y laubicacindelacompilacin:Whereisthesourcecode:C:\VTK5Wheretobuildthebinaries:C:\VTK5_buildDamosclicenConfigure.LedamoscomoopcinlainstalacindeVTKparaVisualStudio92008.Veremos la barra verde trabajando, mostrando al finalizar en rojo las lneas que deben serdefinidas.DarclicenAdvancedViewparapoderaccederamsopcionesparaescoger.Enstasmarcar:BUILD_EXAMPLES:ONVTK_USE_GUISUPPORT:ONUSE_QT:ONDESIRED_QT_VERSION:4DardenuevoclicenConfigurehastaquetodaslaslneasaparezcanengris.Estaslneaspuedenaparecerendiferentespantallas,cadavezquesedalaordenConfigure.CuandotodoaparezcaengrispodemosdarclicenGenerate,conlocualsehabrgeneradoelcdigoparacompilarenlacarpetaindicada(C:\VTK5_build).EnestacarpetaabrirelarchivoVTK.slnconVisualStudio.EnelExploradordesolucionesdarclicenALL_BUILD,luegoclicenelmenGenerar,yclicenGenerarALL_BUILD,compilndoseelprograma.Porltimoparainstalarlo,enelExploradordesoluciones,clicenINSTALL,luegoenGenerar,yenGenerarINSTALL.PordefectoloinstalarenC:\Archivosdeprograma\VTK.LasrespectivaslibrerasdeVTKdebenserincluidasenVisualStudio.ParahacerestoabrirelVisualy dar clic en Herramientas, luego en Opciones, Proyectos y soluciones, finalmente enDirectoriosdeVC++.AquenArchivosdeinclusinagregarunalneapara:C:\Archivosdeprograma\VTK\include\vtk5.8\YenArchivosdebibliotecaagregarunalneapara:C:\Archivosdeprograma\VTK\lib\vtk5.8\

  • Realizaremosacontinuacinunejemploparalacargadeunarchivogrficoconextensin*.obj:AbrimosQTCreatorycreamosunproyectollamadoLectura,consusarchivospordefectoconlosnombresde leer.cpp, leer.h, leer.uiymain.cpp.Creamosentoncesunaventanaconelsiguientemenenlapartesuperiorizquierda(ArchivoydelsaleImportar).

    EnelmendeQTCreator,bajolarbricadeContainers,tomamoselWidgetyloubicamosennuestraventanadelproyecto,dndoleuntamaodeseado(comosemuestraarribaconelcuadrodibujado).Enlapartesuperiorderecha,dondeaparecenlosObjetosysusClases,veremoslaclaseQWidgetycolocamosenelnombredelobjeto(haciendodobleclick)lapalabraprincipal.Abajoveremosotra claseQWidget, correspondiente a la ventanaWidgetque acabamosde colocarenelpasoanterior.Lecolocamoscomonombrerenderizado,ydamosclickderechosobreelnombredelobjeto(QWidget).EnelmenquesedespliegadamosclickenPromoteto.Enlanuevaventanaqueseabredamosnombrealaclasepromovida(Promotedclassname)comoQVTKWidget(locual incluye las librerasdeVTKpara trabajarcon loswidgetsdefinidosenQTCreator).Apareceautomticamenteelnombredelarchivoqvtkwidget.h.ClickenPromoteysecierra laventana.Quedaraalgocomolosiguiente:

    GuardamoselproyectoycerramosQTCreator.

  • GeneraremosahoraelcorrespondienteproyectoparaVisualStudio.CopiamoselsiguientecdigoenelblocdenotasylecolocamoscomonombreCMakeLists.txt.cmake_minimum_required(VERSION2.8)PROJECT(Lectura)FIND_PACKAGE(VTKREQUIRED)INCLUDE(${VTK_USE_FILE})FIND_PACKAGE(Qt4REQUIRED)INCLUDE(${QT_USE_FILE})INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})FILE(GLOBfuente_SRCS"*.cpp")FILE(GLOBUIs_SRCS"*.ui")FILE(GLOBcabecera_SRCS"*.h")SET(cabecera_Gui_SRCSLeer.h)QT4_WRAP_UI(UisCabecera_SRCS${UIs_SRCS})QT4_WRAP_CPP(MOC_SRCS${cabecera_Gui_SRCS})ADD_EXECUTABLE(Lectura${fuente_SRCS}${UisCabecera_SRCS}${MOC_SRCS}${cabecera_SRCS})TARGET_LINK_LIBRARIES(LecturaQVTKvtkHybridvtkWidgets)Tendremosentoncesenunacarpeta(porejemplolacarpetaLectura)elarchivoCMakeLists.txt,mslosarchivoscreadosporQTCreator,esdecirleer.cpp,leer.h,main.cppyleer.ui.Se creauna carpetadonde se construir elproyecto (por ejemplo Lectura_buil) y se genera elmismo con laayudadeCMake (como fuente la carpeta Lectura; comodestino la carpetavacallamadaLectura_build).Unavezfinalizada latareaconCMake(configureygenerate),abrimoselarchivoLectura.snlqueapareceenlacarpetaLectura_build.SeabreautomticamenteconVisualStudio,vindoseen laparte izquierdaelmencon losarchivosdecabecera(leer.hyui_leer.h)ylosarchivosfuente(leer.cppymain.cpp).Enelarchivoleer.cppborramostodoloquetiene(muchaslneasseconservanperomejorborrartodo)ycopiamoselsiguientecdigo:#include"leer.h"#include"ui_leer.h"#include#include#include#include#includeLeer::Leer(QWidget*parent):QMainWindow(parent),ui(newUi::Leer){ui>setupUi(this);

  • renderer=vtkRenderer::New(); obj=vtkOBJReader::New(); polyData=vtkPolyData::New(); mapper=vtkPolyDataMapper::New(); mapperC=vtkPolyDataMapper::New(); actor=vtkActor::New(); actorC=vtkActor::New(); estilo=vtkInteractorStyleTrackballCamera::New(); iren=vtkRenderWindowInteractor::New(); matriz1=vtkMatrix4x4::New(); matriz2=vtkMatrix4x4::New(); renderer>SetBackground(0.2,0.3,0.5); iren>SetInteractorStyle(estilo); ui>renderizado>GetRenderWindow()>AddRenderer(renderer); ui>renderizado>GetRenderWindow()>SetInteractor(iren); ui>renderizado>GetRenderWindow()>Render(); connect(ui>actionImportar,SIGNAL(triggered()),this,SLOT(importar()));}Leer::~Leer(){deleteui; renderer>Delete(); obj>Delete(); polyData>Delete(); mapper>Delete(); actor>Delete(); estilo>Delete();}voidLeer::importar(){QStringarchivo=QFileDialog::getOpenFileName(this,tr("Abrirarchivo"),"",tr("Archivos(*.obj)")); archivoAbierto=true;std::stringextension=vtksys::SystemTools::GetFilenameLastExtension(archivo.toStdString());obj>SetFileName(archivo.toAscii()); obj>Update(); polyData=obj>GetOutput(); mapper>SetInput(polyData); actor>SetMapper(mapper); renderer>AddActor(actor); renderer>ResetCamera(); ui>renderizado>GetRenderWindow()>Render();}Yenelarchivoleer.hborramostodoycopiamoslosiguiente:

  • #ifndefLeer_H#defineLeer_H#include#include#include#include#include#include#include#include#include#include#include#includenamespaceUi{classLeer;}classLeer:publicQMainWindow{Q_OBJECTpublic:explicitLeer(QWidget*parent=0);~Leer();publicslots: voidimportar();private:Ui::Leer*ui; vtkRenderer*renderer; vtkPolyData*polyData; vtkActor*actor,*actorC; vtkPolyDataMapper*mapper,*mapperC; vtkOBJReader*obj; vtkRenderWindowInteractor*iren; vtkInteractorStyleTrackballCamera*estilo; vtkMatrix4x4*matriz1,*matriz2; boolarchivoAbierto;};#endif//Leer_HAsegurndonos que la configuracin de soluciones se halle en modo Release, compilamosALL_BUILD.EstogenerarunejecutablellamadoLectura.exeenlacarpetaRelease,dentrodelacarpetaLectura_build.EnestacarpetaReleasecopiarelarchivoHigado_BajaRes.obj(oelarchivoobjquesedesee),elcualseencuentraenladireccinwww.unicauca.edu.co/deic/Documentos.Aldar doble click sobre Lectura.exe se abre la ventana diseada enQT Creator, con elmen deArchivoenlapartesuperiorizquierda.Damosclickenesemen,aparecelaopcinImportary

  • aldarclickenellaescogemoselarchivoHigado_BajaRes.obj(oencualquierarchivo*.objqueseencuentre en otra ubicacin del PC). La imagen que se carga en pantalla puede cambiarse deorientacindandoclicksostenido.Unaimagendelarchivocargadoseapreciaacontinuacin: