Está en la página 1de 13

INTRODUCCINALQTYALQTCREATOR UNIVERSIDADDELCAUCA Profesor:OscarAndrsVivasAlbn

El framework Qt vio la luz pblica en el ao 1995. Fue desarrollado por dos ingenieros noruegos, Haavard Nord y Eirik ChanbleEng, como respuesta a la necesidad de disponer de un GUI para una aplicacin C++ multiplataforma orientado a objetos. Estos ingenieros fundaron la compaa Quasar Technologiesen1994,nombrequefueevolucionandohastaconvertirseenTrolltech. Trolltech empez a ofrecer Qt con la licencia GPL a partir del ao 2000, siendo sta gratuita para el desarrollo de software libre, pero de pago para el desarrollo de software privativo (constitua una fuentedeingresosparaTrolltech).Apartirde2005aparecilaversinparaWindowsbajolicenciaGPL. Actualmente, y a raz de la compra de Trolltech por parte de Nokia a principios del ao 2009, Qt se ofrececonlicenciaLGPL.Enlaltimadcada,Qthapasadodeserunproductousadoporunospocos desarrolladoresespecializados,aunproductousadopormilesdedesarrolladoresopensourceentodo elmundo,porloqueelfuturodeestatecnologaeshoydamuyprometedor. Enlaversin1.0y2.2deQt,secreabanlosdilogos(diseosdelasventanas)medianteQtDesigner,y stosseconvertanacdigomediantelautilidadUIC(UserInterfaceCompiler).Enestaversinyase dabasoportealmecanismoestrelladeQt(signalsyslots):elUICgenerabalosslots(virtuales)yestos seimplementabanconcdigomedianteherencia. Enlaversin3.0deQt,seincorporelmecanismodelarchivoui.h,quepermitaimplementarslots sinnecesidaddeherencia,yqueeraincluidoautomticamenteporelcdigofuentegeneradoporUIC. QtDesignertenauneditordecdigointegradoparapodereditarelarchivoui.h,yunafuncionalidad (llamadasource)paraaadirvariableseincludes.Tambindisponadecapacidaddecargadeplugins paradarsoporteaCustomWidgets(haciendoquefueranvisiblesenQtDesigner)einclusounparserde archivos de proyecto .pro. Adicionalmente, se podan realizar conexiones a Bases de Datos y ver el contenido de sus tablas. Por ello, era posible construir una aplicacin completa usando nicamente QtDesigner. Sin embargo, esta aproximacin de edicin centralizada mediante QtDesigner tena una serie de carencias,yeranlossiguientes: EleditordecdigodeQtDesignernodisponadefuncionesbsicas(comoporejemplo,irauna determinadalnea). Existanproblemasdesincronizacinaleditarelarchivoui.hexternamenteaQtDesigner. No era posible su integracin con IDEs existentes, por ello desarrolladores acostumbrados a otrosIDEsdebanutilizaralafuerzaQtDesignerparaprogramarenQt. Enlaversin4.0deQtsehancorregidotodasestascarencias.Dehecho,elcambiomsimportanteha sidolaposibilidaddeintegracindeQtDesignerconIDEsexistentesloquederivenladesaparicindel editordetextobsicodelquehacagalaQtDesignerensuversin3.0.Adems,QtDesignergenerael archivo .ui con la interfaz, y el UIC genera el cdigo para sta (similar al comportamiento de las versiones1.0y2.2,perogenerandonicamenteunarchivo.h). Ahora,laherenciaserealizadelaclaseprincipaldelainterfazydelainterfazdeobjetosdeusuario, siendotodoestecdigogeneradoautomticamente.

QTCREATOR Qt Creator es un IDE creado por Trolltech para el desarrollo de aplicaciones con las bibliotecas Qt, 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. La versinactualesla2.3.0. INSTALACINDEQTYQTCREATOR Enelsiguientedirectorioseencuentranlosinstaladoresdeestosdosprogramas: www.unicauca.edu.co/deic/Documentos PrimeroseinstalaQT,versin4.7.4: qtwinopensource4.7.4vs2008.exe InstalarporejemploenC:\Qt Segundo se deben aadir ciertas variables en el entorno. Para Windows 7 abrir el Panel de Control, SistemasySeguridad,SistemayalaizquierdadarclickenConfiguracinAvanzadadelSistema.Enla ventana que se abre dar click en Opciones Avanzadas / Variables de Entorno. Se abre una nueva ventana dividida en dos partes. En la parte inferior, Variables del Sistema, click en la variable Path y luego en Editar. Aadir, despus de ;, la variable ;C:\Qt\4.7.4\bin (esto depende claro est de dndeseinstalQtensucomputador). UnavezhechoestosedebecompilarQtparaquefuncioneconMicrosoftVisualStudio.Paraesto,una vez se tiene instalado Visual Studio 2008, se abre el promt desde VS (click en Inicio, Todos los Programas, Microsoft Visual Studio 2008, Visual Studio Tools, Smbolo del sistema de Visual Studio 2008).Seabreunanuevaventanaennegroconlaubicacinactual.Nosubicamosenlacarpetadonde seinstalQt(parairatrsenunacarpetasepuededarcd..): C:\Qt\4.7.4\ Escribirlasiguienteconfiguracindespusdeubicarnosenelsitioanterior: >configurereleasestaticplatformwin32msvc2008(luegoEnter) El proceso de configuracin tardar unos cinco minutos. Luego compilamos el programa para Visual Studio,escribimos: >nmake(luegoEnter) Lacompilacintardarentredosycuatrohoras,podemostomarunapausalarga. UnavezcompiladoQTprocedemosainstalarQTCreator.Deldirectorioanteriorbajamoseinstalamos elarchivo: qtcreatorwinopensource2.3.0.exe

PorejemploseinstalaenlaubicacinC:\Qtcreator2.3.0 CREACINDEUNASENCILLAAPLICACINSOBREQTCREATOR/QT(sinnecesidaddeescribircdigo!): AbrirQTCreatorycrearunnuevoproyecto: ClickenFile,NewFileorProject. Se abre una nueva ventana. En la parte izquierda escogemos Qt Widget Project, en la parte de la derechaescogemosQtGuiApplication.ClickenChoose. Enlanuevaventanaqueseabrecolocamosnombrealproyectoysucarpetadeubicacin(nopueden tenerelmismonombre).ParaesteejemplolosnombresescogidosEjemployNuevorespectivamente. LuegoclickenNext,Next,NextyFinish. SeabrelaventanadeQtCreator.ObservequeenlaparteizquierdasecrearonlascarpetasHeaders, SourcesyForms.Enstasencontramoslosarchivos: Headers:mainwindow.h Sources:main.cpp,mainwindow.cpp Forms:mainwindow.ui Abrimosesteltimoarchivo,quecontienelainterfazgrficaarealizar(siemprequequeramosvolvera cargar la interfaz que estamos construyendo daremos doble click sobre este archivo). Aparece un nuevoambiente,condiversosbotonesalaizquierdayenlapartesuperiorunaventanalimpiadonde secrearlainterfaznecesaria. Alanuevainterfazselepuedeaumentardetamaodandoclicksostenidoenalgunodelosbordes. Pasemoslossiguienteswidgetsdelaparteizquierdaalaventanaenlimpio,yorganicmoslostalcomo lomuestralasiguienteimagen:

TextLabel(dondedandodobleclickcolocaremosVentanadePrueba). HorizontalSlider(barradedesplazamientohorizontal).

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

Loswidgetspuedensermovidosporelformulariosolocondarclicksostenidosobreellosydesplazarel ratn.Setrabajarconlosobjetosanterioresdelasiguientemanera: DobleclickenTextLabelycolocarVentanadePrueba.Enlapartederechaaparecenlaspropiedades de cada widget. Cambiar el tamao de la letra en Font, colocar tamao 14 y ampliar el respectivo marcoparaqueaparezcatodoeltexto. RemarcarelHorizontalSlideryelSpinBox,quedebeestarasuderecha.Aparecernlosmarcossobre los dos widgets. Dar luego click sobre el botn Lay Out Horizontally, as quedarn unidos los dos widgets(estosepuedehacerconcualquierotroparogrupodebotones,paraunamejorpresentacin). Para conectar diversas seales se da click sobre el cono Edit Signal/Slots de la parte superior izquierda(opulsarF4).ParasalirdeestaedicindarclickenelconoEditWidgets(opulsarF3). TrabajarconHorizontalSliderySpinBox. UnavezpulsadoF4darclicksostenidosobreHorizontalSlider,apareceuncuadrorojosobreelwidget, ydesplazarhastaelSpinBox,quequedaenrojotambin.Seabreunanuevaventanaparadefinirel tipodeconexinentrelosdosbloques.ParaelprimerosecolocavalueChanged(int),paraelsegundo setValue(int),luegoOK.LainterfazlogradasegrabaconCTRL+S. En la parte inferior izquierda aparece un botn verde de Play. Pulsamos el botn y la aplicacin compilaelprograma,informandodeerroressiloshay,comosiestuviramoscompilandobajoVisual Studio. Aparece entonces la ventana resultante: si desplazamos la barra horizontal hacia la derecha veremosavanzarelnmeroenelSpinBoxhastaelmximoquees99(estenmeropuedevariarseen laspropiedadesdelSpinBox). ObsrvesequeenlacarpetaNuevo(dentrodelacarpetadeQtCreatoroenlaubicacinqueselehaya dado) aparecen dos carpetas ms. Una que se llama ejemplo y aparecen los archivos base del programa,yotrallamadaEjemplobuilddesktop,dondeaparecelacarpetaReleaseydentrodestael ejecutable Ejemplo.exe. Al abrirlo igualmente aparece la pantalla resultante con la barra que se desplazayelindicadordenmero. Hagamos ahora otra conexin. Pulsado F4 conectamos el Spin Box con el Text Edit de abajo. En la ventana de configuracin de conexiones escogemos valueChanged(QString) como origen y append(QString)comodestino.Alcompilarnuevamenteveremoscmoalcambiarlabarradeslizante tambinlosvaloresdelSpinBoxaparecenenelcuadrodetexto. TrabajarconelComboBox DarclickenelComboBox,iralapartesuperiorderechadondeaparecenlosobjetosylasclases.Click derechosobreQComboBoxyluegosobreEditComboBox.ColocarBuscarenelbotn,yadicionar

tresms(dandoclickenelbotn+delaparteinferiorizquierda):Arriba,MedioyAbajo.Bajoeste botn se coloc un segundo Text Browser. Vamos a realizar la conexin entre estos dos bloques de otra manera (en vez de Edit Signals/Slots), esta vez desde la ventana de edicin de seales y slots, ubicada justo debajo de la interfaz que se est creando. En la pestaa de Signals & Slots Editor se puedenverlaconexinqueyaseharealizado.Aadimosunams(clickenelsigno+)yllenamoslos datosdelascolumnasSender,Signal,ReceiverySlot.Losdatosescogidosdeunmensern respectivamente:ComboBox,Activated(QString),textBrowser_2,insertPlainText(QString).Estoloque haceesquealabrirelmendelComboBoxseactivalaedicindetextoenelsegundoTextBrowser.Si compilamosveremosquecadavezquecambiamosdepalabraenelmen,staaparececomotextoen lapequeaventanabajoelmen. Trabajarconeldial LaideaesqueeldialvareelnmeroquemuestraelSpinBoxyqueelPushButtonasociadoborreel ltimovaloranotado.Estoselograconlaadicindelasdossiguienteconexiones: dial sliderMoved(int) spinBox_2 setValue(int) pushButton clicked() spinBox_2 clear() Compilaryobservarelresultadoobtenido. TrabajarconelPushButtonyelTextBrowser PrimeroquetodosecambiaelnombredelPushButtonenlaspropiedades(enObjectNameyentext) porBoton1.Luegoseeditanlascorrespondientesseales: Boton1 clicked() textBrower clear() DebemosasegurarnosqueenlaspropiedadesdeesteTextBrowser,bajolapropiedaddeQTextEdit,no aparezcaactivadalacasilladeReadOnly,sinoenlaventanadeedicinnoaceptarningncarcter.Al compilarsepuedeescribircualquiertextoenestaventana(TextBrowser)perosisepulsaelbotnel textoseborrar. Ahora haremos que adems de lo anterior, al pulsar Boton1 aparezca una ventana con un texto especfico.ParaestodamosclicksobreBoton1yconclickderechovamoshastaGotoslot.Seabre una ventana nueva y seleccionamos clicked(). Se abre automticamente el archivo mainwindow.cpp, en el sitio que define la accin a ejecutar una vez se de click en el botn anotado. En ese sitio escribimos: QMessageBox::information(this,"TtulodelMessageBox","Botnpulsado","Aceptar"); Yenlacabeceradelarchivoescribimos: #include<QMessageBox> Alcompilardenuevoveremoselsiguienteresultado:SiescribimosalgntextoenelTextBrowser,ste se borra al pulsar la tecla Boton1, caso en el cual aparece tambin una ventana que dice Botn pulsadoyunnuevobotndeAceptar.Alpulsarsesteltimodichaventanadesaparece.

Trabajarconelmendelaventana En el extremo superior izquierdo de la ventana aparece la frase Type Here. Dando doble click podemosintroducirlapalabraMenyluegodamosEnter.Apareceentoncesnuestronuevomen. DamostresvecesTypeHerebajolapalabraMenyeditamoslostextosdemaneraqueaparezcanlas palabras:Archivo,Guardar,Configurar.DamosclicksobreAddSeparatoryluego,bajoesalnea quemeacabadecrear,dobleclicksobreTypeHereycolocamosBorrar. Enlaventanadeedicindesealesyslotspodemosagregarlasiguienteconfiguracin: actionBorrar triggered() textEdit clear() Significa esto que una vez compilado, podemos escribir algo en el editor de texto pero si abrimos el menydamosclickenlapalabraBorrar,eltextoescritodesaparece. Trabajarconimgenes Para trabajar con imgenes se debe primero que todo crear los recursos necesarios. Para esto supongamosquetenemosunaimagenenformato*.bmp(oencualquierotroformatogrfico)enla mismacarpetadondeestelproyecto,estaimagensellamarlogo_grupo.bmp.EnQTCreator,dando clickenelconoEditdelaparteizquierda,aparecerelrboldecarpetasqueformaelproyecto,cuyo nombreesEjemplo.Sidamosclickderechosobreelnombredelproyecto,aparecerunnuevomen. Damos click sobre Add New. En la nueva ventana que aparece damos click en Qt a la izquierda y sobre Qt Resource File a la derecha. En la ventana siguiente le colocamos nombre, por ejemplo Recursos,colocndoleelprogramalaextensin*.qrc.ClickenNextydespusenFinish. Observamos que en el rbol del proyecto aparece ahora la carpeta Resources y dentro de ella el archivo Recursos.qrc. Damos doble click sobre ste ltimo, apareciendo abajo una ventana con el botnAdd.Damosclicksobrelyadicionamosunnuevoprefijo(AddPrefix).Unavezestablecido elprefijo,denuevoclicksobreAddyestavezaadiremosunarchivo(AddFiles).Estearchivoser la imagen que tenemos en la misma carpeta (logo_grupo.bmp). Luego grabamos este archivo Recursos.qrc. Vamosahoraalainterfazqueestamosconstruyendo.PasamosdelaizquierdaaladerechaunLabel. Agrandamoselcuadroqueacabamosdepasar,borramoslapalabraTextLabelqueaparecaydamos clickderecho.UnadelasformasdeincluirlafiguraesdarclicksobreChangerichtextenelmenque acaba de aparecer. Aparece una ventana a la derecha de la cual hay un cono que se llama Insert image. Damos click sobre l y aparece una ventana que se llama Select Resource. Escribimos a la derecha Recurso.qrc y Enter. En la ventana de la izquierda aparece prefix1, damos click sobre l apareciendoalaizquierdalafiguraasociada.DamosOKyyatendremosennuestrainterfazlafigura deseada,lacualpodemoscambiardetamaoyubicacin. CREARUNPROJECTOPARAVISUALSTUDIO QT/QTCreatorpermitedisearlainterfazgrficadelaaplicacin.Sinembargoelaccesoapuertospara conectar hardware externo, por ejemplo, debe seguir hacindose a partir de C++. Esto implica que nuestra interfaz debe poder abrirse en Visual Studio como un proyecto. La herramienta que me permiteestoesCMake,diseadaparagenerarcdigoendiversasplataformas.

LaltimaversindeCMakeesla2.8.5(www.cmake.org).Labajamosdelsitioylainstalamos.Enel ejemplo anterior de QT Creator supongamos que hemos creado nuestra interfaz en la carpeta C:\Qtcreator2.3.0\Nuevo. CMake trabaja con un archivo de configuracin que debe estar ubicado en la misma carpeta del proyecto, en nuestro caso en la carpeta C:\Qtcreator2.3.0\Nuevo\Ejemplo. Este archivo se llamar CMakeLists.txt. El archivo genrico es el siguiente, copiarlo en un bloc de notas y grabarlo con el nombreanotadoanteriormente:
cmake_minimum_required(VERSION2.8) PROJECT(Ejemplo) FIND_PACKAGE(Qt4REQUIRED) INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})#Esdondelacabeceradeluisegenera FILE(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 la ubicacindelasfuentesacompilarylaubicacindelacompilacin: Whereisthesourcecode:C:\Qtcreator2.3.0\Nuevo\Ejemplo Wheretobuildthebinaries:C:\Ejemplo_buil DamosclicenConfigure.UnavezterminelaconfiguracindamosclicksobreGenerate,conlocual sehabrgeneradoelcdigoparacompilarenlacarpetaindicada(C:\Ejemplo_build).Enestacarpeta abrimoselarchivoEjemplo.slnconVisualStudio. En el Explorador de soluciones dar clic en ALL_BUILD, luego clic en el men Generar, y clic en Generar ALL_BUILD, compilndose el programa. Tener en cuenta antes de realizar esto que el configurador de soluciones de Visual Studio debe estar en modo Release (y no en Debug). El VS crearentoncesunejecutableenlacarpetaReleasedeesteproyecto.Yapodemosaadiralproyecto todaslaslibrerasyutilidadesnecesarias,conservandolainterfazgrficacreadaanteriormenteenQT Creator.

CREACINDEHERRAMIENTAS3DCONVTK Aunque QT permite trabajar con diferentes archivos grficos, bsicamente solo se pueden desplegar en pantalla sin funcionalidades adicionales. Sin embargo el software VTK, creado por Kitware,permitelarealizacinyvisualizacinavanzadadegrficosen3D.Estaslibrerasdecdigo abiertopuedendescargarsedewww.vtk.orgodelapginadelDEICindicadaarriba(archivovtk 5.8.0.zip). Descargarydescomprimirdichoarchivo,porejemploenC:\VTK.Secrealuegounacarpetadonde se 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 la ubicacindelacompilacin: Whereisthesourcecode:C:\VTK5 Wheretobuildthebinaries:C:\VTK5_build DamosclicenConfigure.LedamoscomoopcinlainstalacindeVTKparaVisualStudio92008. Veremos la barra verde trabajando, mostrando al finalizar en rojo las lneas que deben ser definidas.DarclicenAdvancedViewparapoderaccederamsopcionesparaescoger.Enstas marcar: BUILD_EXAMPLES:ON VTK_USE_GUISUPPORT:ON USE_QT:ON DESIRED_QT_VERSION:4 DardenuevoclicenConfigurehastaquetodaslaslneasaparezcanengris.Estaslneaspueden aparecerendiferentespantallas,cadavezquesedalaordenConfigure.Cuandotodoaparezca engrispodemosdarclicenGenerate,conlocualsehabrgeneradoelcdigoparacompilaren lacarpetaindicada(C:\VTK5_build).EnestacarpetaabrirelarchivoVTK.slnconVisualStudio. EnelExploradordesolucionesdarclicenALL_BUILD,luegoclicenelmenGenerar,yclicen GenerarALL_BUILD,compilndoseelprograma.Porltimoparainstalarlo,enelExploradorde soluciones,clicenINSTALL,luegoenGenerar,yenGenerarINSTALL.Pordefectoloinstalar enC:\Archivosdeprograma\VTK. LasrespectivaslibrerasdeVTKdebenserincluidasenVisualStudio.ParahacerestoabrirelVisual y dar clic en Herramientas, luego en Opciones, Proyectos y soluciones, finalmente en DirectoriosdeVC++.AquenArchivosdeinclusinagregarunalneapara: C:\Archivosdeprograma\VTK\include\vtk5.8\ YenArchivosdebibliotecaagregarunalneapara: C:\Archivosdeprograma\VTK\lib\vtk5.8\

Realizaremosacontinuacinunejemploparalacargadeunarchivogrficoconextensin*.obj: AbrimosQTCreatorycreamosunproyectollamadoLectura,consusarchivospordefectoconlos nombres de leer.cpp, leer.h, leer.ui y main.cpp. Creamos entonces una ventana con el siguiente menenlapartesuperiorizquierda(ArchivoydelsaleImportar).

EnelmendeQTCreator,bajolarbricadeContainers,tomamoselWidgetyloubicamosen nuestraventanadelproyecto,dndoleuntamaodeseado(comosemuestraarribaconelcuadro dibujado). Enlapartesuperiorderecha,dondeaparecenlosObjetosysusClases,veremoslaclaseQWidget ycolocamosenelnombredelobjeto(haciendodobleclick)lapalabraprincipal.Abajoveremos otra clase QWidget, correspondiente a la ventana Widget que acabamos de colocar en el paso anterior.Lecolocamoscomonombrerenderizado,ydamosclickderechosobreelnombredel objeto(QWidget).EnelmenquesedespliegadamosclickenPromoteto.Enlanuevaventana queseabredamosnombrealaclasepromovida(Promotedclassname)comoQVTKWidget(lo cual incluye las libreras de VTK para trabajar con los widgets definidos en QT Creator). Aparece automticamenteelnombredelarchivoqvtkwidget.h.ClickenPromoteysecierralaventana. Quedaraalgocomolosiguiente:

GuardamoselproyectoycerramosQTCreator.

GeneraremosahoraelcorrespondienteproyectoparaVisualStudio.Copiamoselsiguientecdigo enelblocdenotasylecolocamoscomonombreCMakeLists.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 crea una carpeta donde se construir el proyecto (por ejemplo Lectura_buil) y se genera el mismo con la ayuda de CMake (como fuente la carpeta Lectura; como destino la carpeta vaca llamadaLectura_build).UnavezfinalizadalatareaconCMake(configureygenerate),abrimosel archivoLectura.snlqueapareceenlacarpetaLectura_build.SeabreautomticamenteconVisual Studio,vindoseenlaparteizquierdaelmenconlosarchivosdecabecera(leer.hyui_leer.h)y losarchivosfuente(leer.cppymain.cpp). Enelarchivoleer.cppborramostodoloquetiene(muchaslneasseconservanperomejorborrar todo)ycopiamoselsiguientecdigo:
#include"leer.h" #include"ui_leer.h" #include<vtkRenderWindow.h> #include<vtksys/SystemTools.hxx> #include<vtkCamera.h> #include<QFileDialog> #include<QString> Leer::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<QMainWindow> #include<vtkRenderer.h> #include<vtkPolyData.h> #include<vtkActor.h> #include<vtkPolyDataMapper.h> #include<vtkPolyDataReader.h> #include<vtkXMLPolyDataReader.h> #include<vtkPLYReader.h> #include<vtkOBJReader.h> #include<vtkRenderWindowInteractor.h> #include<vtkInteractorStyleTrackballCamera.h> #include<vtkMatrix4x4.h> namespaceUi{ classLeer; } classLeer:publicQMainWindow { Q_OBJECT public: 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_H

Asegurndonos que la configuracin de soluciones se halle en modo Release, compilamos ALL_BUILD.EstogenerarunejecutablellamadoLectura.exeenlacarpetaRelease,dentrodela carpetaLectura_build.EnestacarpetaReleasecopiarelarchivoHigado_BajaRes.obj(oelarchivo objquesedesee),elcualseencuentraenladireccinwww.unicauca.edu.co/deic/Documentos.Al dar doble click sobre Lectura.exe se abre la ventana diseada en QT Creator, con el men de Archivoenlapartesuperiorizquierda.Damosclickenesemen,aparecelaopcinImportary

aldarclickenellaescogemoselarchivoHigado_BajaRes.obj(oencualquierarchivo*.objquese encuentre en otra ubicacin del PC). La imagen que se carga en pantalla puede cambiarse de orientacindandoclicksostenido.Unaimagendelarchivocargadoseapreciaacontinuacin:

También podría gustarte