2. ¿Qué es Qt?
Biblioteca multiplataforma.
Biblioteca multiplataforma.
Usada para desarrollar aplicaciones con interfaz
Usada para desarrollar aplicaciones con interfaz
gráfica de usuario.
gráfica de usuario.
Herramientas para la línea de comandos y consolas
Herramientas para la línea de comandos y consolas
para servidores.
para servidores.
Utiliza el lenguaje de programación C++ de forma
Utiliza el lenguaje de programación C++ de forma
nativa.
nativa.
3. ¿Por qué Qt?
Compatibilidad y riqueza de características.
Compatibilidad y riqueza de características.
Alto rendimiento de C++.
Alto rendimiento de C++.
Disponibilidad del código fuente.
Disponibilidad del código fuente.
Documentación y soporte técnico de alta calidad.
Documentación y soporte técnico de alta calidad.
4. Pero... olvidamos lo más importante!
Qt es un éxito porque a los programadores
Qt es un éxito porque a los programadores
les GUSTA!!!
les GUSTA!!!
5. Para empezar
Hola mundo Qt!!!
Hola mundo Qt!!!
Combinación básica entre C++ y las funcionalidades
Combinación básica entre C++ y las funcionalidades
de Qt para crear aplicaciones con interfaz gráfica.
de Qt para crear aplicaciones con interfaz gráfica.
Introducción de los conceptos de “Signals” y “Slots”.
Introducción de los conceptos de “Signals” y “Slots”.
Introducción de la idea de “Layouts”.
Introducción de la idea de “Layouts”.
6. ADVERTENCIA!!!
Este manual está realizado para usuarios
Este manual está realizado para usuarios
Linux.
Linux.
En este punto se asume que están
En este punto se asume que están
instaladas y disponibles las librerías
instaladas y disponibles las librerías
necesarias para compilar C++ y Qt.
necesarias para compilar C++ y Qt.
NOTA: El tema de la instalación de las librerías se
NOTA: El tema de la instalación de las librerías se
abordará en otra ocasión.
abordará en otra ocasión.
7. Hola mundo Qt
Comencemos con un simple programa Qt.
Comencemos con un simple programa Qt.
[001-hola-mundo.cpp]
[001-hola-mundo.cpp]
#include <QApplication>
#include <QApplication>
#include <QLabel>
#include <QLabel>
int main(int argc, char *argv[]) {
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QApplication app(argc, argv);
QLabel *label = new QLabel("Hola Mundo Qt!");
QLabel *label = new QLabel("Hola Mundo Qt!");
label>show();
label>show();
return app.exec();
return app.exec();
}}
8. Correr programas Qt
Para correr el programa anterior escribimos en una
Para correr el programa anterior escribimos en una
consola de comandos lo siguiente:
consola de comandos lo siguiente:
qmake project
qmake project
qmake 001holamundo.pro
qmake 001holamundo.pro
make
make
./001holamundo
./001holamundo
9. Haciendo conexiones “Signals” y “Slots”
El mecanismo de “signals” y “slots” es una
El mecanismo de “signals” y “slots” es una
característica central y distintiva de Qt.
característica central y distintiva de Qt.
Se utiliza para la comunicación entre objetos.
Se utiliza para la comunicación entre objetos.
Los widgets de Qt emiten señales (“signals”) para
Los widgets de Qt emiten señales (“signals”) para
indicar una acción del usuario o un cambio de estado.
indicar una acción del usuario o un cambio de estado.
Una señal puede ser conectada a un slot.
Una señal puede ser conectada a un slot.
Los “slots” son funciones que se ejecutan
Los “slots” son funciones que se ejecutan
automáticamente cuando una señal es emitida.
automáticamente cuando una señal es emitida.
10. Quit hola mundo
Hola mundo con un botón en el que el usuario puede
Hola mundo con un botón en el que el usuario puede
hacer clic para salir. [002-quit-hola-mundo.cpp]
hacer clic para salir. [002-quit-hola-mundo.cpp]
#include <QApplication>
#include <QApplication>
#include <QPushButton>
#include <QPushButton>
int main(int argc, char *argv[]) {
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QApplication app(argc, argv);
QPushButton *button = new QPushButton("Salir");
QPushButton *button = new QPushButton("Salir");
QObject::connect(button, SIGNAL(clicked()), //
QObject::connect(button, SIGNAL(clicked()), //
&app, SLOT(quit()));
&app, SLOT(quit()));
button>show();
button>show();
return app.exec();
return app.exec();
}}
11. Disposición de widgets
El sistema de “layouts” de Qt proporciona una forma
El sistema de “layouts” de Qt proporciona una forma
simple y poderosa de organizar automáticamente
simple y poderosa de organizar automáticamente
widgets, asegurando un buen uso del espacio.
widgets, asegurando un buen uso del espacio.
Control de la posición, tamaño y redimensionamiento
Control de la posición, tamaño y redimensionamiento
automático de widgets.
automático de widgets.
Actualización automática de tamaños de fuentes,
Actualización automática de tamaños de fuentes,
textos u otros contenidos de los widgets.
textos u otros contenidos de los widgets.
Ocultar, mostrar y eliminar widgets.
Ocultar, mostrar y eliminar widgets.
12. Hola layouts [1/2]
La aplicación pide la edad del usuario, la cual puede
La aplicación pide la edad del usuario, la cual puede
introducirse mediante la manipulación de un spinbox
introducirse mediante la manipulación de un spinbox
o un slider. [003-hola-layouts.cpp]
o un slider. [003-hola-layouts.cpp]
#include <QApplication>
#include <QApplication>
#include <QHBoxLayout>
#include <QHBoxLayout>
#include <QSlider>
#include <QSlider>
#include <QSpinBox>
#include <QSpinBox>
int main(int argc, char *argv[]) {
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QApplication app(argc, argv);
QWidget *window = new QWidget;
QWidget *window = new QWidget;
window>setWindowTitle("Ingresa tu Edad");
window>setWindowTitle("Ingresa tu Edad");
QSpinBox *spinBox = new QSpinBox;
QSpinBox *spinBox = new QSpinBox;
QSlider *slider = new QSlider(Qt::Horizontal);
QSlider *slider = new QSlider(Qt::Horizontal);
...
14. Ejercicio
Realizar un programa en el que el usuario ingrese su
Realizar un programa en el que el usuario ingrese su
nombre y el sistema lo salude. Ver figura.
nombre y el sistema lo salude. Ver figura.