Els fitxers de diàleg (.ui) es creen i s'editen amb l'aplicació QT Designer, que forma part de les llibreries QT.
Com hem comentat anteriorment, es tracta de fitxers ASCII que estan composats per codi XML. Al ser fitxers de text, els podem crear/editar utilitzant qualsevol editor de text, tot i que això farà que tinguem que conéixer com s'estructuren internament i també serà necessari que tinguem nocions d'XML.
Per tal de facilitar la feina al desenvolupador, ens ve donada l'aplicació QT Designer, amb la que d'una manera visual i intuitiva, podrem crear les finestres de diàleg de les aplicacions d'una manera molt més senzilla utilitzant un entorn gràfic.
Aquests fitxers de diàleg (.ui) necessiten ésser transformats en codi C++ per poder ser compilats. Aquest procès de transformació ja s'engega automàticament dins QDevelop al fer una compilació. Si volguéssim entrar en més detalls, l'encarregat d'efectuar aquesta conversió és qmake.
Tal com hem dit, el fitxer de diàleg està fet amb XML, i únicament conté el disseny de la finestra (botons, barres d'eines...) però no conté cap mena d'implementació, ja que aquesta l'haurem de fer a part; és a dir, el fet de que quan es premi un determinat botó es faci una determinada acció, no s'inclou dins el fitxer .ui, sinó que s'ha d'implementar dins els fitxers de C++ de la finestra de diàleg.
Per exemple, si tenim una finestra de diàleg que es diu dialeg.ui, tindrem dos fitxers de C++ associats que seran (per defecte) dialegimpl.h i dialegimpl.cpp. Una característica interessant de QDevelop és que ens proporciona assistència a l'hora de crear la implementació dels diferents widgets que composen la finestra de diàleg sobre les diferents accions que poden realitzar-se en cadascun d'ells.
Per accedir a aquesta funcionalitat, ho podem fer clicant amb el botó dret sobre el nom del fitxer de diàleg i escollint l'opció de Heredar Diálogo... Llavors se'ns obrirà una finestra on hi trobem el següent:
Tot seguit se'ns mostra una llista de tots els widgets que hi ha en la finestra de diàleg i que podem desplegar per poder veure totes les possibilitats d'implementació de cadascun d'ells depenent del tipus.
Aleshores, podem marcar marcar les funcionalitats que vulguem implementar i ja se'ns afegiran les declaracions i funcions corresponents dins els fitxers .h i .cpp i ja només en restarà fer-ne la implementació.
S'ha de dir, que el nom d'aquestes funcionalitats que ens apareix a l'escollir l'opció de Heredar Diálogo..., està format per:
on_ + nomWidget + _ + nomSignal()
Així per un botó que es digui buttonOk i un Signal de clicked() tindrem que la funció per implementar es dirà: on_buttonOk_clicked()
![]() |
![]() |
![]() |
Josep Ramon Benet Bitrià
2008