You are on page 1of 15

Esta es una traducción parcial del

video oficial de ICSNetwork: Best


Practices for Qt Programming.
Solo para fines educativos
realizada por:
ICS Network
Rafael Cardona
Pagman6@hotmail.com
presenta
Mejores Prácticas para
la programación con Qt
Christopher Probst
Y el equipo de ICS
Octubre de 2008

ICS Integrated Computer


Solutions Incorporated
Partner
Agenda de Hoy
•Antes de codificar
•Codificando la Interfaz Gráfica de
Usuario (GUI)
•Aspectos de aplicaciones sin GUI
•Depurando
•Toques finales
•Resumen

ICS Network ICS


Antes de Codificar- Mejor Práctica Nº1
Observar los ejemplos, demos, Qt-Solutions
desde Trolltech Partners y los proyectos de
código abierto.
•Algo similar a lo que quieres, ya puede existir.
•Los ejemplos de Qt son cuidadosamente escritos para
mostrar buenas practicas de programación con Qt
•Verificar las condiciones de licencia antes de usar
cualquier código existente

ICS Network ICS


Mejor Práctica Nº2
Investigar los módulos extra de programación
y de frameworks que vienen junto a Qt.
•A parte de la programación de GUIS, Qt provee APIS de
plataforma independiente para tecnologías claves tales
como: Threads, Networking, XML, Graphics View,
OpenGL, SQL y mucho más…
•Lo que tu programa necesite lograr, puede estar en gran
parte, contenido en esos módulos

ICS Network ICS


Mejor Práctica Nº3
Conozca qmake

•Qmake puede simplificar el proceso de construcción en


el desarrollo multiplataforma
•Genera makefiles, nMake Makefiles,
•Genera archivos de proyectos Visual C++, VS NET y
MacOS Xcode
•Puede tener algunas limitaciones para proyectos de
gran escala

ICS Network ICS


Programando la GUI - Mejor Práctica Nº4
Favorecer la creación de QObjects en el heap
usando new y asignándoles un padre.
•A menos que el tiempo de vida del QObject se encuentre en el
mismo método donde se ha creado, realizar esta
recomendación prevendrá al QObject de ser destruido sin
intención
•El Objeto es eliminado cuando su padre es eliminado
•Asegurarse de que todos los QObjects tengan un padre, esto
asegura que todos los QObjects serán eventualmente
destruidos

ICS Network ICS


Mejor Práctica Nº4 (continuación)
Ejemplo:
QLabel aLabel(this)
aLabel.setText(“esto es realmente importante”);
aLabel.show()//esta etiqueta (label) desaparecerá de
la //pantalla, tan pronto esta función termine

QLabel* aLabel=new QLabel(this);


aLabel->setText(“Esto es realmente importante”);
aLabel->show() //Esta etiqueta (label) desaparecerá de
la //pantalla una vez que su padre sea destruido

ICS Network ICS


Mejor Práctica Nº5
No usar herencia múltiple desde un
QObject y una sub-clase de QObject

•Qt no lo soporta

ICS Network ICS


Mejor Práctica Nº6
Entender la diferencia entre: QDialog()::exec() y
QWidget()::show().
•Estos dos métodos usados con exceso tienen propósitos muy
similares y pueden causar algunas confusiones cuando se empieza
con Qt
•Qwidget::show() muestra el widget y sus widgets hijos
•QDialog()::exec() muestra el dialogo y sus hijos y también espera
hasta que el usuario los cierra, bloqueando todo imput a otros
widgets de la aplicación

ICS Network ICS


Mejor Práctica Nº6 (continuación)
•Conociendo la diferencia entre estos dos métodos es
conocer también la diferencia entre un QDialog y un
QWidget
•La clase QWidget es la clase base de todos los objetos de
interfaz de usuario
•La clase QDialog hereda de QWidget y es usada para
recuperar información necesaria del usuario para continuar
con la aplicación

ICS Network ICS


Mejor Práctica Nº7
Antes de escribir un widget personalizado,
asegúrese de que este no exista
•Todos los objetos en Qt son, de hecho, widgets personalizados
•Qt ofrece un montón de Widgets únicos:
Qcalendar,Qtooltip,QTabWidgets,QDateEdit,QTimeEdit y mucho
más
•Escribir widgets personalizados requiere la re implementación
de QPaintEvent y usar Qpaintter
•Si la Interfaz de su Widget es única, puede no tener mas
opción que hacer sus propios widgets personalizados

ICS Network ICS


Mejor Práctica Nº8
Favorecer el uso de Layouts antes que tener
posicionados los ítems del programa con coordenadas.
•Conteniendo tus widgets en Layouts , “mágicamente” se
manipulan tus interfaces.
•Los layouts reorganizarán sensatamente tus widgets en tu
aplicación, cuando:
- La interfaz es redimensionada
- Las fuentes cambian
- El texto cambia
- Un widget desaparece

ICS Network ICS


Mejor Práctica Nº9
Cuando use Qt-Designer y cuando se cree una librería, se debe
favorecer la delegación técnica antes que la herencia.
Ejemplo:
Class MiForma : public Qwidget
{…
private:
Ui::MiForma ul;
};

•Añade flexibilidad tanto como se pueda instanciar diferentes


clases UI en tiempo de ejecución
•Puede resultar en compilaciones ligeramente mas rápidas

ICS Network ICS


ICSNetwork
¿Estásinteresado en ver la introducción a
Qt completa o observar los demás videos
in estas series?

Visítanos en:
http://www.ics.com/icsnetwork/

ICS
Integrated Computer
Solutions Incorporated
ICSNetwork
• ICSNetwork es el Lugar para Aprender Técnicas Avanzadas para
el Desarrollo con Qt. Actualmente hay 9 webcast de
entrenamiento gratis, disponibles para descarga:
• Una Introducción a Qt
• Qt WebKit
• Mejores Practicas para la programación con Qt
• El Framework ModelView
• Diseño de Patterns en Qt 4
• Qué hay de nuevo en Qt 4.4
• El Framework GraphicsView
• Una Introducción a Qthreads
• Mejores Practicas para localización con Qt

ICS
Integrated Computer
Solutions Incorporated

You might also like