Este documento trata sobre conceptos fundamentales de programación lógica y funcional. Explica los estilos de programación, la evaluación de expresiones, la definición de funciones, la disciplina de tipos y los tipos de datos básicos como booleano, entero, flotante y caracter.
Este documento explica la importancia de los requerimientos en el desarrollo de software y define conceptos clave como requerimientos funcionales y no funcionales. También clasifica diferentes tipos de requerimientos y destaca que una especificación de requerimientos completa y consistente es fundamental para evitar errores costosos en el desarrollo.
Here I discuss about Java programming language and easiest way to solve programming problem. Java basic syntax and their uses are described briefly so that anyone can easily understand within very short time. If anyone follow the slide with proper way,I assure that he or she will find java programming interesting.
The Java Virtual Machine (JVM) is an abstract computing machine that provides a platform-independent way of executing Java code. The Java Runtime Environment (JRE) is an implementation of the JVM that contains the JVM, class libraries, and other supporting files needed to run Java programs but lacks development tools. The Java Development Kit (JDK) contains the JRE as well as development tools like compilers and debuggers that are necessary for writing Java programs but not for simply running existing programs.
Este documento discute la animación de actores en Greenfoot. Explica que los constructores en World se agregan de forma predeterminada, mientras que los constructores en los actores no se agregan. También describe cómo usar múltiples imágenes para crear una animación suave y cómo las imágenes transparentes permiten efectos más realistas.
Este documento describe conceptos fundamentales de Java como métodos, variables, parámetros, herencia y depuración. Explica que los métodos son operaciones que pueden realizar objetos, y que los parámetros proporcionan datos adicionales a los métodos. También describe que las variables permiten almacenar información en objetos y que la herencia significa que las subclases heredan métodos de sus superclases.
El documento describe los estándares para el diseño de interfaces gráficas de usuario. Explica que una interfaz gráfica incluye elementos como ventanas, menús y botones que permiten la interacción del usuario. También describe características clave como facilidad de uso, representación consistente y elementos fácilmente identificables. Finalmente, detalla varios estándares y directrices importantes para el diseño de interfaces como ISO 9241 e ISO 13407.
Este documento describe los conceptos fundamentales del código fuente y la documentación en Java. Explica los componentes del código fuente como la descripción de la clase, los métodos, los comentarios y la documentación. También cubre temas como cómo invocar métodos, usar sentencias if, y mostrar la orientación de objetos mediante métodos.
Este documento trata sobre conceptos fundamentales de programación lógica y funcional. Explica los estilos de programación, la evaluación de expresiones, la definición de funciones, la disciplina de tipos y los tipos de datos básicos como booleano, entero, flotante y caracter.
Este documento explica la importancia de los requerimientos en el desarrollo de software y define conceptos clave como requerimientos funcionales y no funcionales. También clasifica diferentes tipos de requerimientos y destaca que una especificación de requerimientos completa y consistente es fundamental para evitar errores costosos en el desarrollo.
Here I discuss about Java programming language and easiest way to solve programming problem. Java basic syntax and their uses are described briefly so that anyone can easily understand within very short time. If anyone follow the slide with proper way,I assure that he or she will find java programming interesting.
The Java Virtual Machine (JVM) is an abstract computing machine that provides a platform-independent way of executing Java code. The Java Runtime Environment (JRE) is an implementation of the JVM that contains the JVM, class libraries, and other supporting files needed to run Java programs but lacks development tools. The Java Development Kit (JDK) contains the JRE as well as development tools like compilers and debuggers that are necessary for writing Java programs but not for simply running existing programs.
Este documento discute la animación de actores en Greenfoot. Explica que los constructores en World se agregan de forma predeterminada, mientras que los constructores en los actores no se agregan. También describe cómo usar múltiples imágenes para crear una animación suave y cómo las imágenes transparentes permiten efectos más realistas.
Este documento describe conceptos fundamentales de Java como métodos, variables, parámetros, herencia y depuración. Explica que los métodos son operaciones que pueden realizar objetos, y que los parámetros proporcionan datos adicionales a los métodos. También describe que las variables permiten almacenar información en objetos y que la herencia significa que las subclases heredan métodos de sus superclases.
El documento describe los estándares para el diseño de interfaces gráficas de usuario. Explica que una interfaz gráfica incluye elementos como ventanas, menús y botones que permiten la interacción del usuario. También describe características clave como facilidad de uso, representación consistente y elementos fácilmente identificables. Finalmente, detalla varios estándares y directrices importantes para el diseño de interfaces como ISO 9241 e ISO 13407.
Este documento describe los conceptos fundamentales del código fuente y la documentación en Java. Explica los componentes del código fuente como la descripción de la clase, los métodos, los comentarios y la documentación. También cubre temas como cómo invocar métodos, usar sentencias if, y mostrar la orientación de objetos mediante métodos.
Planificacion de CPU FCFS (First Come, First Served)Rodrigo Saraguro
Este documento describe el algoritmo de planificación First Come First Served (FCFS) para la CPU. FCFS es el algoritmo más sencillo, donde el primer proceso en solicitar la CPU es el primero en recibirla. Tiene ventajas como su fácil implementación, pero también desventajas como tiempos de espera elevados y bajo nivel de utilización de la CPU.
Requerimientos Funcionales y no Funcionalessullinsan
Este documento presenta una introducción a los requerimientos funcionales y no funcionales para el desarrollo de sistemas de software. Explica el proceso de levantamiento de requerimientos, incluyendo la identificación de actores, escenarios y casos de uso. También describe las diferentes clasificaciones de requerimientos no funcionales y pseudo-requerimientos, así como las relaciones entre casos de uso.
Los diagramas de casos de uso representan las interacciones entre actores y un sistema. Un caso de uso describe una funcionalidad del sistema y una secuencia de acciones entre un actor y el sistema. Los actores pueden ser personas u otros sistemas. Los casos de uso se utilizan para capturar los requisitos funcionales y describir las funcionalidades del sistema desde la perspectiva de los actores.
Sesion09 - Manejo de Excepciones (Oracle)José Toro
Este minitutorial tiene como objetivo captar todos los conceptos dictados en cada sesión en el curso de Base de Datos Avanzado II, así como brindar apoyo a los alumnos de la carrera técnica de Computación e Informática, que por algún motivo no hayan asistido a clases.
UNIDAD 4. Programación en Oracle
Logro de la Unidad de Aprendizaje
Al término de la unidad, el alumno construye programas estructurados utilizando el lenguaje PL/SQL dentro del manejador de base de datos Oracle. Incorpora cursores para procesar grandes volúmenes de información y gestiona los posibles errores de ejecución con el uso de excepciones.
Temario
4.4 Tema 9: EXCEPCIONES EN PL/SQL
4.4.1 ¿Qué es una Excepción?
4.4.2 Declaración de Excepciones
4.4.3 Generación de Excepciones
4.4.4 Tratamiento de Excepciones
4.4.5 Propagación de Excepciones
public class Empleado {
private String dni;
private String nombre;
private String apellidos;
private String domicilio;
private String codigoPostal;
private String ciudad;
private PuestoTrabajo puestoTrabajo;
// Constructor, getters y setters
}
public class PuestoTrabajo {
private String codigo;
private String descripcion;
// Constructor, getters y setters
}
2. Declare una clase Profesor que herede de la clase Empleado. La
clase Profesor debe incluir los atributos departamento de tipo String y
númer
This document provides examples of Java programming concepts and code snippets to demonstrate how to implement various Java features. It includes examples for Java basics like strings, arrays, files and directories as well as more advanced topics like collections, networking, threading and GUI programming. Each section breaks down a specific concept like string manipulation or environment settings into discrete code examples that show how to perform common tasks like comparing strings, setting the classpath, or splitting a string.
Prolog programacion y aplicaciones. dy w.d. burnham y a. r. hallvmanuelhernandez
La pandemia de COVID-19 ha tenido un impacto significativo en la economía mundial. Muchos países experimentaron fuertes caídas en el PIB y aumentos en el desempleo debido a los cierres generalizados y las restricciones a los viajes. Aunque las vacunas han permitido la reapertura de muchas economías, los efectos a largo plazo de la pandemia en sectores como el turismo y los viajes aún no están claros.
El documento presenta un modelo de dominio para un videoclub. Explica que un modelo de dominio representa los conceptos clave de un dominio (como videos, clientes y transacciones de alquiler) y sus relaciones, más que objetos de software. Usa notación UML de diagramas de estructura estática para mostrar las entidades, atributos y asociaciones de un videoclub.
Este documento describe JFlex, una herramienta para generar analizadores léxicos en Java. JFlex genera código Java a partir de una especificación léxica. La especificación incluye expresiones regulares para definir tokens, directivas para controlar el comportamiento, y acciones en Java para procesar los tokens. El documento también describe cómo usar JFlex en un proyecto Eclipse para construir un analizador léxico y sintáctico sencillo para una calculadora.
The document discusses input/output files in Java. It covers the key classes used for reading and writing files in Java, including FileInputStream, FileOutputStream, FileReader, and FileWriter. It also discusses byte streams versus character streams, and provides examples of reading and writing to files in Java using these classes. Standard input/output streams like System.in and System.out are also covered.
Sesion 7 2 diseño diagramas de despliegueJulio Pari
Este documento describe los diagramas de despliegue en UML. Explica que estos diagramas muestran cómo el software se distribuye en los diferentes nodos de hardware, como procesadores. Detalla las notaciones para representar los nodos, componentes de software y las conexiones entre ellos. El propósito es modelar cómo el software se mapea al hardware para representar la arquitectura física de una aplicación.
Este documento describe conceptos clave de programación orientada a objetos como clases, objetos, tipos abstractos de datos, constructores, paquetes y la clase Object. Explica cómo declarar una clase, los diferentes tipos de visibilidad de métodos, y el uso de this. También cubre temas como recolección de objetos, miembros static, y provee ejemplos de cómo aplicar estos conceptos en Java.
Este documento describe el propósito de desarrollar un sistema de gestión para una empresa de cultivo y distribución de caña. El sistema permitirá controlar las operaciones de la empresa como pedidos, inventario, y facturación de una manera automatizada e integrada. El sistema proporcionará interfaces amigables para que los empleados puedan acceder a información actualizada desde cualquier ubicación.
This presentation educates you about Applications of Expert System, Expert System Technology, Development of Expert Systems: General Steps and Benefits of Expert Systems.
For more topics stay tuned with Learnbay.
El documento habla sobre autómatas finitos, sus relaciones con lenguajes regulares, ejemplos y aplicaciones. Explica conceptos básicos de autómatas finitos como estados, estado inicial, estados finales y transiciones. Luego presenta dos ejemplos de autómatas finitos y analiza si aceptan o rechazan ciertas palabras. Finalmente menciona algunas aplicaciones de los autómatas finitos como el análisis léxico y sintáctico en compiladores y herramientas de procesamiento de len
Este documento propone el desarrollo de una herramienta web para que los aspirantes a la Universidad Tecnológica Israel rindan exámenes psicológicos de ingreso de forma online. La herramienta automatizaría el proceso de calificación de exámenes, almacenaría las notas de los estudiantes en una base de datos, y en el futuro permitiría rendir los exámenes desde casa para agilizar el proceso. El objetivo es mejorar la eficiencia del proceso de selección y facilitar el acceso a la información sobre
Este documento describe la metodología orientada a objetos y el modelado de sistemas de información bajo esta metodología. Explica que la metodología orientada a objetos considera que los sistemas pueden verse como un conjunto de objetos que interactúan entre sí. Luego enumera los elementos primarios y secundarios del modelo de objetos. Finalmente, detalla los diferentes diagramas que se usan en el modelado de sistemas de información con UML, incluyendo diagramas de clases, casos de uso, objetos, actividades, secuencia, colaboración,
Las reglas de producción son una forma de representar el conocimiento mediante el uso de "si" y "entonces" para establecer relaciones entre antecedentes y consecuentes. Existen dos tipos de reglas de producción: sistemas de encadenamiento hacia adelante, que se activan cuando los antecedentes coinciden con los hechos del sistema, y sistemas de encadenamiento hacia atrás, que se activan cuando los consecuentes coinciden con los hechos del sistema. Las reglas de producción ofrecen ventajas como transparencia, uniformidad y modularidad.
El documento describe el analizador sintáctico, el cual se encarga de chequear el texto de entrada basado en una gramática dada y generar un árbol sintáctico si el programa es válido. Funciona obteniendo tokens del analizador léxico y verificando que la cadena pueda ser generada por la gramática del lenguaje. La gramática independiente de contexto permite generar automáticamente el analizador sintáctico y proporciona una estructura al lenguaje.
El documento habla sobre los conceptos básicos del lenguaje de programación Python. Explica que las variables deben empezar con letras no numéricas y pueden contener letras, números y guiones bajos. También menciona los tipos de datos como números, cadenas, listas y diccionarios, y cómo se pueden manipular y operar con ellos. Finalmente, introduce conceptos como condicionales if/else y bucles para controlar el flujo del programa.
segunda clase de python, resumiendo 2 años en un par de horas.
La idea es mostrar las ventajas de algunas herramientas de software, su uso, configuración y paradigmas.
Este documento presenta los conceptos básicos para desarrollar interfaces gráficas de usuario en Python usando la biblioteca PyQt. Explica que PyQt permite crear aplicaciones GUI fusionando Python con la biblioteca QT. Luego, muestra ejemplos paso a paso para crear ventanas, botones, menús y cajas de entrada usando PyQt. Finalmente, introduce la herramienta Qt Designer que permite diseñar interfaces gráficas de forma gráfica.
Planificacion de CPU FCFS (First Come, First Served)Rodrigo Saraguro
Este documento describe el algoritmo de planificación First Come First Served (FCFS) para la CPU. FCFS es el algoritmo más sencillo, donde el primer proceso en solicitar la CPU es el primero en recibirla. Tiene ventajas como su fácil implementación, pero también desventajas como tiempos de espera elevados y bajo nivel de utilización de la CPU.
Requerimientos Funcionales y no Funcionalessullinsan
Este documento presenta una introducción a los requerimientos funcionales y no funcionales para el desarrollo de sistemas de software. Explica el proceso de levantamiento de requerimientos, incluyendo la identificación de actores, escenarios y casos de uso. También describe las diferentes clasificaciones de requerimientos no funcionales y pseudo-requerimientos, así como las relaciones entre casos de uso.
Los diagramas de casos de uso representan las interacciones entre actores y un sistema. Un caso de uso describe una funcionalidad del sistema y una secuencia de acciones entre un actor y el sistema. Los actores pueden ser personas u otros sistemas. Los casos de uso se utilizan para capturar los requisitos funcionales y describir las funcionalidades del sistema desde la perspectiva de los actores.
Sesion09 - Manejo de Excepciones (Oracle)José Toro
Este minitutorial tiene como objetivo captar todos los conceptos dictados en cada sesión en el curso de Base de Datos Avanzado II, así como brindar apoyo a los alumnos de la carrera técnica de Computación e Informática, que por algún motivo no hayan asistido a clases.
UNIDAD 4. Programación en Oracle
Logro de la Unidad de Aprendizaje
Al término de la unidad, el alumno construye programas estructurados utilizando el lenguaje PL/SQL dentro del manejador de base de datos Oracle. Incorpora cursores para procesar grandes volúmenes de información y gestiona los posibles errores de ejecución con el uso de excepciones.
Temario
4.4 Tema 9: EXCEPCIONES EN PL/SQL
4.4.1 ¿Qué es una Excepción?
4.4.2 Declaración de Excepciones
4.4.3 Generación de Excepciones
4.4.4 Tratamiento de Excepciones
4.4.5 Propagación de Excepciones
public class Empleado {
private String dni;
private String nombre;
private String apellidos;
private String domicilio;
private String codigoPostal;
private String ciudad;
private PuestoTrabajo puestoTrabajo;
// Constructor, getters y setters
}
public class PuestoTrabajo {
private String codigo;
private String descripcion;
// Constructor, getters y setters
}
2. Declare una clase Profesor que herede de la clase Empleado. La
clase Profesor debe incluir los atributos departamento de tipo String y
númer
This document provides examples of Java programming concepts and code snippets to demonstrate how to implement various Java features. It includes examples for Java basics like strings, arrays, files and directories as well as more advanced topics like collections, networking, threading and GUI programming. Each section breaks down a specific concept like string manipulation or environment settings into discrete code examples that show how to perform common tasks like comparing strings, setting the classpath, or splitting a string.
Prolog programacion y aplicaciones. dy w.d. burnham y a. r. hallvmanuelhernandez
La pandemia de COVID-19 ha tenido un impacto significativo en la economía mundial. Muchos países experimentaron fuertes caídas en el PIB y aumentos en el desempleo debido a los cierres generalizados y las restricciones a los viajes. Aunque las vacunas han permitido la reapertura de muchas economías, los efectos a largo plazo de la pandemia en sectores como el turismo y los viajes aún no están claros.
El documento presenta un modelo de dominio para un videoclub. Explica que un modelo de dominio representa los conceptos clave de un dominio (como videos, clientes y transacciones de alquiler) y sus relaciones, más que objetos de software. Usa notación UML de diagramas de estructura estática para mostrar las entidades, atributos y asociaciones de un videoclub.
Este documento describe JFlex, una herramienta para generar analizadores léxicos en Java. JFlex genera código Java a partir de una especificación léxica. La especificación incluye expresiones regulares para definir tokens, directivas para controlar el comportamiento, y acciones en Java para procesar los tokens. El documento también describe cómo usar JFlex en un proyecto Eclipse para construir un analizador léxico y sintáctico sencillo para una calculadora.
The document discusses input/output files in Java. It covers the key classes used for reading and writing files in Java, including FileInputStream, FileOutputStream, FileReader, and FileWriter. It also discusses byte streams versus character streams, and provides examples of reading and writing to files in Java using these classes. Standard input/output streams like System.in and System.out are also covered.
Sesion 7 2 diseño diagramas de despliegueJulio Pari
Este documento describe los diagramas de despliegue en UML. Explica que estos diagramas muestran cómo el software se distribuye en los diferentes nodos de hardware, como procesadores. Detalla las notaciones para representar los nodos, componentes de software y las conexiones entre ellos. El propósito es modelar cómo el software se mapea al hardware para representar la arquitectura física de una aplicación.
Este documento describe conceptos clave de programación orientada a objetos como clases, objetos, tipos abstractos de datos, constructores, paquetes y la clase Object. Explica cómo declarar una clase, los diferentes tipos de visibilidad de métodos, y el uso de this. También cubre temas como recolección de objetos, miembros static, y provee ejemplos de cómo aplicar estos conceptos en Java.
Este documento describe el propósito de desarrollar un sistema de gestión para una empresa de cultivo y distribución de caña. El sistema permitirá controlar las operaciones de la empresa como pedidos, inventario, y facturación de una manera automatizada e integrada. El sistema proporcionará interfaces amigables para que los empleados puedan acceder a información actualizada desde cualquier ubicación.
This presentation educates you about Applications of Expert System, Expert System Technology, Development of Expert Systems: General Steps and Benefits of Expert Systems.
For more topics stay tuned with Learnbay.
El documento habla sobre autómatas finitos, sus relaciones con lenguajes regulares, ejemplos y aplicaciones. Explica conceptos básicos de autómatas finitos como estados, estado inicial, estados finales y transiciones. Luego presenta dos ejemplos de autómatas finitos y analiza si aceptan o rechazan ciertas palabras. Finalmente menciona algunas aplicaciones de los autómatas finitos como el análisis léxico y sintáctico en compiladores y herramientas de procesamiento de len
Este documento propone el desarrollo de una herramienta web para que los aspirantes a la Universidad Tecnológica Israel rindan exámenes psicológicos de ingreso de forma online. La herramienta automatizaría el proceso de calificación de exámenes, almacenaría las notas de los estudiantes en una base de datos, y en el futuro permitiría rendir los exámenes desde casa para agilizar el proceso. El objetivo es mejorar la eficiencia del proceso de selección y facilitar el acceso a la información sobre
Este documento describe la metodología orientada a objetos y el modelado de sistemas de información bajo esta metodología. Explica que la metodología orientada a objetos considera que los sistemas pueden verse como un conjunto de objetos que interactúan entre sí. Luego enumera los elementos primarios y secundarios del modelo de objetos. Finalmente, detalla los diferentes diagramas que se usan en el modelado de sistemas de información con UML, incluyendo diagramas de clases, casos de uso, objetos, actividades, secuencia, colaboración,
Las reglas de producción son una forma de representar el conocimiento mediante el uso de "si" y "entonces" para establecer relaciones entre antecedentes y consecuentes. Existen dos tipos de reglas de producción: sistemas de encadenamiento hacia adelante, que se activan cuando los antecedentes coinciden con los hechos del sistema, y sistemas de encadenamiento hacia atrás, que se activan cuando los consecuentes coinciden con los hechos del sistema. Las reglas de producción ofrecen ventajas como transparencia, uniformidad y modularidad.
El documento describe el analizador sintáctico, el cual se encarga de chequear el texto de entrada basado en una gramática dada y generar un árbol sintáctico si el programa es válido. Funciona obteniendo tokens del analizador léxico y verificando que la cadena pueda ser generada por la gramática del lenguaje. La gramática independiente de contexto permite generar automáticamente el analizador sintáctico y proporciona una estructura al lenguaje.
El documento habla sobre los conceptos básicos del lenguaje de programación Python. Explica que las variables deben empezar con letras no numéricas y pueden contener letras, números y guiones bajos. También menciona los tipos de datos como números, cadenas, listas y diccionarios, y cómo se pueden manipular y operar con ellos. Finalmente, introduce conceptos como condicionales if/else y bucles para controlar el flujo del programa.
segunda clase de python, resumiendo 2 años en un par de horas.
La idea es mostrar las ventajas de algunas herramientas de software, su uso, configuración y paradigmas.
Este documento presenta los conceptos básicos para desarrollar interfaces gráficas de usuario en Python usando la biblioteca PyQt. Explica que PyQt permite crear aplicaciones GUI fusionando Python con la biblioteca QT. Luego, muestra ejemplos paso a paso para crear ventanas, botones, menús y cajas de entrada usando PyQt. Finalmente, introduce la herramienta Qt Designer que permite diseñar interfaces gráficas de forma gráfica.
Este documento presenta una introducción a QT Jambi, que permite usar la biblioteca gráfica QT desde Java. Explica que QT Jambi implementa los widgets, gráficos, E/S y red de QT en Java usando señales y ranuras como en QT. También cubre herramientas como QT Designer e integración con Eclipse, y da ejemplos de cómo acceder a dispositivos y usar señales y ranuras en QT Jambi. El documento concluye dando información de contacto para el orador.
Esta presentación tiene como objetivo conocer los aspectos básicos de PyQt4 y como realizar aplicaciones en Python con interfaces de usuario usando esta biblioteca.
Qt es una biblioteca multiplataforma para desarrollar aplicaciones con interfaz gráfica de usuario. Utiliza C++ de forma nativa y proporciona herramientas para línea de comandos y servidores. Qt ofrece compatibilidad, rendimiento, código abierto y soporte. Introduce conceptos como signals, slots y layouts para conectar componentes y organizar la interfaz gráfica. Los ejemplos muestran programas holamundo y de ingreso de datos usando estos conceptos.
Este documento proporciona una introducción al framework Qt4, describiendo su historia y evolución desde su creación en 1991 hasta la versión 4.7 lanzada en 2010. Explica que Qt4 es un framework multiplataforma para desarrollo de interfaces gráficas en C++, y ha sido ampliamente adoptado para aplicaciones de escritorio, móviles y embebidas. También resume los hitos clave en el desarrollo de Qt4, incluyendo su adopción para el escritorio KDE de Linux y su adquisición por Nokia para aplicaciones m
Este documento proporciona una introducción al framework Qt4, describiendo su historia y evolución desde su creación en 1991 hasta la versión 4.7 lanzada en 2010. Explica que Qt4 es un framework multiplataforma para desarrollo de interfaces gráficas en C++, y ha sido ampliamente adoptado para aplicaciones de escritorio, móviles y embebidas. También resume los hitos clave en el desarrollo de Qt4, incluyendo su adopción para el escritorio KDE de Linux y su adquisición por Nokia para aplicaciones m
Este documento proporciona una introducción al framework Qt4 para desarrollo multiplataforma. Explica que Qt4 fue creado en 1991 para permitir el uso del mismo código en interfaces gráficas para Windows y UNIX, y cómo ha evolucionado desde entonces para admitir múltiples sistemas operativos y plataformas, incluidos dispositivos móviles. También resume brevemente la historia de C++ y cómo Qt4 se basa en este lenguaje orientado a objetos.
Introducción a la Arquitectura y Desarrollo en KDE4Arturo Hoffstadt
KDE es un entorno de escritorio gratuito y de código abierto originalmente desarrollado para sistemas X11. Consiste en una colección de aplicaciones y herramientas para el desarrollo de aplicaciones gráficas usando las bibliotecas Qt. KDE se ha portado a sistemas como Linux, BSD, Solaris, macOS y Windows. Fue creado en 1996 y actualmente está en su versión 4, basada en Qt 4.4. KDE es extensible a través de plugins, addons y la integración con otras aplicaciones a través de KParts y
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. Incluye un índice con 10 secciones que cubren temas como constantes, operadores, control de flujo, tipos de datos derivados, funciones, entrada/salida y el preprocesador. El objetivo es proporcionar una base para aprender a programar en C++.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe características del lenguaje como compiladores, preprocesadores y librerías estándar. Finalmente, incluye un índice de los temas que se cubrirán en el resto del documento.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. Incluye un índice con 10 secciones que cubren temas como constantes, operadores, control de flujo, tipos de datos derivados, funciones, entrada/salida y el preprocesador. El objetivo es proporcionar una base para aprender a programar en C++.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe elementos del lenguaje como operadores, expresiones, sentencias de control de flujo, tipos de datos derivados, funciones, flujos de entrada/salida y el preprocesador. El documento contiene un índice detallado de los temas cubiertos.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. Incluye un índice con 10 secciones que cubren temas como constantes, operadores, control de flujo, tipos de datos derivados, funciones, entrada/salida y el preprocesador. El objetivo es proporcionar una base para aprender a programar en C++.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe características del lenguaje como compiladores, preprocesadores y librerías estándar. Finalmente, incluye un índice de los temas que se cubrirán en el resto del documento.
Este documento presenta una introducción al lenguaje de programación C++. Explica conceptos básicos como programa, función, tokens y tipos de datos. También describe características del lenguaje como compiladores, preprocesadores y librerías estándar. Finalmente, incluye un índice de los temas que se cubrirán en el resto del documento.
Anjuta es un entorno de desarrollo integrado (IDE) para C y C++ en Linux que incluye un editor de código, compilador, depurador y diseñador de interfaz gráfica. Fue creado en 1999 y ha evolucionado para incluir características como gestión de proyectos, asistentes de aplicaciones y navegador de documentación. Es de código abierto y multiplataforma, con la última versión siendo compatible con Linux y BSD.
C++ es un lenguaje de programación multiparadigma diseñado en los años 1980 como extensión del lenguaje C para permitir la manipulación de objetos. C++ soporta programación estructurada, orientada a objetos y genérica. Incluye características como tipos de datos primitivos, punteros, funciones y clases. Actualmente existe un estándar ISO para C++ usado por la mayoría de compiladores.
NuGet es una herramienta que permite empaquetar código común en paquetes reutilizables y compartirlos a través de repositorios públicos o privados. Los paquetes NuGet contienen DLL compiladas y se pueden instalar fácilmente en proyectos de Visual Studio para agregar funcionalidad sin necesidad de escribir el código desde cero. Un ejemplo es el paquete Newtonsoft.Json que permite la serialización y deserialización de objetos a formato JSON.
Este documento presenta una lista de software libre disponible para ingeniería, incluyendo programas para creación de documentos, edición de imágenes, gráfica de datos, sistemas de álgebra, cálculo numérico, compiladores, entornos de programación, debugging, redes, electrónica y más. La mayoría de los programas son de código abierto y están disponibles para sistemas operativos GNU/Linux y Windows. El documento fue creado usando el lenguaje de marcado LaTeX.
para programadores y desarrolladores de inteligencia artificial y machine learning, como se automatiza una cadena de valor o cadena de valor gracias a la teoría por Manuel Diaz @manuelmakemoney
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
1. Introducción Primeras pinceladas Ahora en serio Avanzado
Introducción a Qt.
Programación gráfica en C++ con Qt4
Salvador Alemany Garrido
21 de noviembre de 2009
Salvador Alemany Garrido– Introducción a Qt.– 1/64
2. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
1 Introducción
2 Primeras pinceladas
3 Ahora en serio
4 Avanzado
Salvador Alemany Garrido– Introducción a Qt.– 2/64
3. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
1 Introducción
2 Primeras pinceladas
3 Ahora en serio
4 Avanzado
Salvador Alemany Garrido– Introducción a Qt.– 3/64
4. Introducción Primeras pinceladas Ahora en serio Avanzado
Prerequisitos de la charla y objetivos
Requisitos
Imprescidible: conocimientos básicos de C++, o
bien C y Java.
Importante:
Nociones de depuradores e IDEs
Nivel de inglés suficiente para la documentación
oficial
Objetivos
Conocer los componentes y las posibilidades de Qt
Saber crear una aplicación, y opciones básicas
Uso de widges básicos conjuntamente
Definición de widgets personalizados.
Salvador Alemany Garrido– Introducción a Qt.– 4/64
5. Introducción Primeras pinceladas Ahora en serio Avanzado
¿Qué es Qt?
Qt es un framework de desarrollo de aplicaciones
multiplataforma.
Viene acompañado de un conjunto de herramientas
para facilitar su uso.
Salvador Alemany Garrido– Introducción a Qt.– 5/64
6. Introducción Primeras pinceladas Ahora en serio Avanzado
Salvador Alemany Garrido– Introducción a Qt.– 6/64
7. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt, los módulos I
QtCore contiene el núcleo no gráfico de Qt
QtGui La colección básica de componentes gráficos
QtNetwork Clases para escribir clientes y servidores
TCP/IP
QtOpenGL Para facilitar el uso de openGL
QtScript Expone las aplicaciones a scripting con un
lenguaje ECMAscript
QtScriptTools un depurador de QtScript
QtSQL integración de bases de datos
QtSVG Soporte SVG
Salvador Alemany Garrido– Introducción a Qt.– 7/64
8. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt, los Módulos II
QtWebKit el popular motor web, con Qt
QtXml soporte básico de Xml
QtXmlPatterns un motor de XQuery 1.0 y XPath 2.0 y
parcialmente Xslt
Phonon El framework multimedia
Qt3Support Compatibilidad con Qt3
Otros QtDessigner, QtUiTools, QtHelp, QtAssistant,
QtTest, QtDBus(solo Unix), y a partir de Qt
4.6 QtOpenVG y QtMultimedia
Salvador Alemany Garrido– Introducción a Qt.– 8/64
9. Introducción Primeras pinceladas Ahora en serio Avanzado
Herramientas
Charla
Editor de textos y/o IDE. Kate y Qt Creator
qmake, gestión de proyectos
Qt designer,diseñador de interfaces
Qt assistant, visor de documentación
Otras Herramientas
Qt linguist, traducción
Cmake, alternativa más flexible y potente a qmake
Otros IDEs: Netbeans, Eclipse... ejem Visual Studio
Salvador Alemany Garrido– Introducción a Qt.– 9/64
10. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
1 Introducción
2 Primeras pinceladas
3 Ahora en serio
4 Avanzado
Salvador Alemany Garrido– Introducción a Qt.– 10/64
11. Introducción Primeras pinceladas Ahora en serio Avanzado
Tipos I
QtGlobal: tipos básicos
Tipos globales
Tenemos los típicos alias para los tipos básicos:
Tipo Descripción
qintSIZE Entero con los tamaños: 8, 16, 32, 64
quintSIZE Entero sin signo de tamaños: 8, 16, 32, 64
qreal double, excepto en ARM que es float
quintptr Entero sin signo de ancho de palabra
Más en la documentación(QtGlobal)
Salvador Alemany Garrido– Introducción a Qt.– 11/64
12. Introducción Primeras pinceladas Ahora en serio Avanzado
Tipos II
Contenedores genéricos
Qt incluye una colección de contenedores genéricos:
QList es el contenedor genérico más usado, no es
una lista enlazada como std::list (el equivalente
sería QLinkedList) sino que internamente usa un
indice en array, es la clase padre de QStringList
clave para gestionar colecciones de QString.
Otros: QLinkedList, QVector, QStack, QQueue,
QSet, QMap, QMultiMap, QHash, QMultiHash.
Lo contenedores de Qt disponen de 2 tipos de
iteradores: estilo STL, y estilo Java, que aputan
entre los elementos y no a los elementos.
Más información en Container Classes
Salvador Alemany Garrido– Introducción a Qt.– 12/64
13. Introducción Primeras pinceladas Ahora en serio Avanzado
Tipos II
Las clases básicas del sistema de objetos
QObject
La base del sistema de objetos de Qt. Todo Widget y la
mayoría de las otras clases de Qt heredan de él.
QApplication o QCoreApplication
La clase QApplication efectúa el control de flujo y las
opciones principales de la aplicación. Solo una instancia
por aplicación. Debe crearse antes de cualquier objeto
relacionado con la GUI.
QWidget
La base de todos los objetos de interfaz de usuario. Los
más comunes son QMainWindow y QDialog y sus
subclases.
Salvador Alemany Garrido– Introducción a Qt.– 13/64
14. Introducción Primeras pinceladas Ahora en serio Avanzado
er
1 Programa
¡Hola mundo!, el código
ejemplo
#include <QApplication>
#include <QLabel>
int main( int argc , char ∗ argv [ ] ) {
QApplication app( argc , argv ) ; / / 1 Crear una app
/ / y solo una ,
QLabel label ( "Hello Qt!" ) ; / / 2 Crear un widget
label . show ( ) ; / / 3 Mostramos e l widget
return app . exec ( ) ; / / 4 Ejecutamos
}
Salvador Alemany Garrido– Introducción a Qt.– 14/64
15. Introducción Primeras pinceladas Ahora en serio Avanzado
Compilación
Procedimiento
Si vas a trabajar sin soporte de un IDE, como en este
ejemplo para compilar debes hacer lo siguiente, desde
la carpeta del proyecto.
1 qmake -project # Genera proyecto
# independiente de SO y compilador
2 qmake # Genera Makefiles
3 make # Compila
4 ??? # como se llame tu programa
5 profit
Salvador Alemany Garrido– Introducción a Qt.– 15/64
16. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
1 Introducción
2 Primeras pinceladas
3 Ahora en serio
4 Avanzado
Salvador Alemany Garrido– Introducción a Qt.– 16/64
17. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
3 Ahora en serio
Extensiones a C++
Algunas clases de interés
Herramientas
Salvador Alemany Garrido– Introducción a Qt.– 17/64
18. Introducción Primeras pinceladas Ahora en serio Avanzado
Extensiones a C++ I
Porque C++ no es suficiente complejo
Qt no es exactamente C++
Qt incluye una serie de funcionalidades que no están
normalmente en C++. Para ello usa su propio
preprocesador llamado MOC(Meta-Object Compiler)
Los Metaobjetos
Qt usa en gran parte de su API un tipo especial de
objetos no nativo de C++, los metabjetos, los cuales se
caracterizan por.
signals y slots
Propiedades,
Arboles de objetos.
Eventos
Timers: Véase Timers
Salvador Alemany Garrido– Introducción a Qt.– 18/64
19. Introducción Primeras pinceladas Ahora en serio Avanzado
QObject
Uso
Para crear y usar un metaobjeto tenemos que hacer 3
cosas:
1 Heredar de QObject.
2 Incluir Q_OBJECT en la primera línea de la
declaración.
3 Usar el Meta-object compiler, gestionado por
qmake.
Salvador Alemany Garrido– Introducción a Qt.– 19/64
20. Introducción Primeras pinceladas Ahora en serio Avanzado
QObject II
Ejemplo
class MyDialog : public QDialog
{
Q_OBJECT
public :
MyDialog (QWidget ∗ parent = 0 ) ; / / Atentos a
~MyDialog ( ) ; / / este argumento opcional
private :
QPushButton ∗ button ;
};
Salvador Alemany Garrido– Introducción a Qt.– 20/64
21. Introducción Primeras pinceladas Ahora en serio Avanzado
Signals y Slots I
Son un mecanismo de comunicación entre objetos que
heredan de QObject. Características:
Son type-safe, la firma de la señal debe encajar con
la firma del slot
Los slots son funciones que pueden ser llamados
normalmente.
Los slots privados, pueden ser invocados por una
señal cualquiera independientemente del nivel de
acceso.
Las clases que emiten señales no necesitan
preocuparse de que slot recibe la señal.
Salvador Alemany Garrido– Introducción a Qt.– 21/64
22. Introducción Primeras pinceladas Ahora en serio Avanzado
Signals y slots II
Declaración de Slots
Slots
Simplemente métodos en una clase que herede de
QObject con la macro Q_OBJECT, declarados después de
una de las siguientes líneas:
public slots:
protected slots:
private slots:
Salvador Alemany Garrido– Introducción a Qt.– 22/64
23. Introducción Primeras pinceladas Ahora en serio Avanzado
Signals y slots III
Emisión de señales
signals
Se declaran como si fueran funciones, en una sección
propia, pero no se implementan. El moc genera el código
necesario.
uso
signals : / / Declarar
exampleSignal ( int emitValue ) ;
/ / ejemplo de emitir
emit exampleSignal ( 4 ) ;
Salvador Alemany Garrido– Introducción a Qt.– 23/64
24. Introducción Primeras pinceladas Ahora en serio Avanzado
Signals y slots IV: Connect
La API de la conexión de un signal y un slot es:
connect (const QObject ∗ sender , const char∗ signal ,
const QObject ∗ receiver , const char∗ s lo t ,
Qt : : ConnectionType type = QtAutoConnection )
Ejemplo
connect ( button , SIGNAL( clicked ( ) ) , qApp, SLOT( quit ( ) ) ) ;
/ / qApp es para acceder a l a QApplicaction global
Las conexiones tienen más posibilidades, pueden ser
automatizadas,canceladas, las señales bloqueadas y más, pero
escapa al propósito de la charla.
Salvador Alemany Garrido– Introducción a Qt.– 24/64
25. Introducción Primeras pinceladas Ahora en serio Avanzado
Propiedades: Q_PROPERTY
Qt incluye un sofisticado sistema de propiedades, similar
al que proporcionan algunos compiladores.
Q_PROPERTY( type name
READ getFunction
[WRITE setFunction ]
[RESET resetFunction ]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
[USER bool ] )
Salvador Alemany Garrido– Introducción a Qt.– 25/64
26. Introducción Primeras pinceladas Ahora en serio Avanzado
Propiedades II
Quien es quien:
1 READ: una función de lectura, obligatoria.
2 WRITE: una función para modificar el valor de la
propiedad, opcional.
3 RESET: función opcional, para que la propiedad
vuelva al valor por defecto.
4 NOTIFY: opcional, emite una señal cuando el valor
de la propiedad cambia.
Salvador Alemany Garrido– Introducción a Qt.– 26/64
27. Introducción Primeras pinceladas Ahora en serio Avanzado
Propiedades III
1 DESIGNABLE: indica si estará disponible en el
diseñador, por defecto true.
2 SCRIPTABLE: indica si estará disponible para
QtScript, por defecto true.
3 STORED: indica si la propiedad es de un valor por si
mismo o dependiente de otros y si debe ser salvado
cuando se guarda el estado del objeto, por defecto
true.
4 USER: editable por el usuario.
Salvador Alemany Garrido– Introducción a Qt.– 27/64
28. Introducción Primeras pinceladas Ahora en serio Avanzado
Propiedades IV
Uso y justificación
Se puede acceder a una propiedad usando
QObject::setProperty(const char *, QVariant &) y
QObject::property(const char *) sin saber nada sobre
la clase excepto el nombre de la propiedad. Es preferible
usar directamente las funciones READ y WRITE, ya que
son más rápidas y proporcionan mejores diagnósticos en
tiempo de compilación. Pero requieren conocer la clase
en tiempo de compilación, y los genéricos no.
ejemplo
QPushButton ∗ button = new QPushButton ;
QObject ∗ object = button ;
button−>setDown( true ) ;
object−>setProperty ( "down" , true ) ;
Salvador Alemany Garrido– Introducción a Qt.– 28/64
29. Introducción Primeras pinceladas Ahora en serio Avanzado
El árbol de objetos
Utilidad
Los QObjects se organizan a si mismos en arboles de
objetos. Cuando creas un QObject con otro como padre,
es añadido a la lista de hijos(accesible con children()) y
será borrado cuando el padre lo sea.
button = new QPushButton ( "Salir" , this ) ;
Salvador Alemany Garrido– Introducción a Qt.– 29/64
30. Introducción Primeras pinceladas Ahora en serio Avanzado
Eventos
Que hacer con ellos
Los eventos en Qt son objetos que derivan de la clase
QEvent. A efectos prácticos típicamente para manejar
eventos de forma personalizada reimplementamos
funciones virtuales.
Salvador Alemany Garrido– Introducción a Qt.– 30/64
31. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
3 Ahora en serio
Extensiones a C++
Algunas clases de interés
Herramientas
Salvador Alemany Garrido– Introducción a Qt.– 31/64
32. Introducción Primeras pinceladas Ahora en serio Avanzado
QWidget
Hereda de QObject y QPaintDevice La base de todos los
widgets, y componente atómico de la interfaz.
Un Widget sin un padre es una ventana independiente.
setWindowTitle() y setWindowIcon() establecen la barra
de titulo y el icono respectivamente.
El constructor de todo Widget debe aceptar uno o 2 de
los argumentos siguientes:
QWidget *parent = 0: Si es 0 será una ventana
principal.
Qt::WindowFlags f = 0: establecer parámetros
especiales para la ventana.
Salvador Alemany Garrido– Introducción a Qt.– 32/64
33. Introducción Primeras pinceladas Ahora en serio Avanzado
QWidget
QWidget(e hijos) usa doble-buffer automáticamente
Es posible crear ventanas con transparencias. (en
X11: solo con Kwin o Compiz)
Aparte de los estilos estándar podemos aplicar estilos
usando CSS.
Funcionalidades básicas: cursores, eventos, detección de
pantalla completa, tooltips...
Salvador Alemany Garrido– Introducción a Qt.– 33/64
34. Introducción Primeras pinceladas Ahora en serio Avanzado
Diálogos I
QDialog e hijos
QDialog es la base de las ventanas de diálogos.
Disponemos básicamente de:
QColorDialog QErrorMessage QFileDialog
QFontDialog QInputDialog QMessageBox
QPageSetupDialog QPrintDialog QPrintPreviewDialog
QProgressDialog QWizard
Salvador Alemany Garrido– Introducción a Qt.– 34/64
35. Introducción Primeras pinceladas Ahora en serio Avanzado
Diálogos II
Descripción detallada
Un dialogo es una ventana de primer nivel siempre,
usada para tareas y comunicaciones breves con el
usuario.
Posibilidades
Diálogos modales: se aplica con exec()
Diálogos no modales: usando el método show()
Botones por defecto:
Se cierran con ESC: ejecutando reject() en la salida
Extensibilidad: véase Extension example
Salvador Alemany Garrido– Introducción a Qt.– 35/64
36. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt MainWindow Framework
QMainWindow y amigos
Podemos entender
que QMainWindow nos
proporciona un marco de
trabajo, para construir una
GUI. QMainWindow tiene
su propio layout al que se
puede añadir QToolBars,
QDockWidgets, un
QMenu, y una QStatusBar.
Salvador Alemany Garrido– Introducción a Qt.– 36/64
37. Introducción Primeras pinceladas Ahora en serio Avanzado
QMainWindow
El widget central
El widget central
puede ser cualquier widged de Qt como QTextEdit o
QGraphicsView o uno personalizado. Establecemos el
widget central con setCentralWidget()
Una ventana principal puede tener una único(SDI) o
múltiple(MDI) interfaz de documentos. Para hacer una
aplicación MDI establece una QMDIArea como widget
principal.
Podemos almacenar y restaurar el layout con:
saveState();
restoreState();
Salvador Alemany Garrido– Introducción a Qt.– 37/64
38. Introducción Primeras pinceladas Ahora en serio Avanzado
QMainWindow
Menús
Creación de menús
Los menús se implementan con QMenu y se mantienen
organizados en una QMenubar. Cada entrada es una
QAction. Añadimos menús con addMenu(QMenu), y
acciones a los menús con con addAcction(QAction)
Ejemplo
void MainWindow : : createMenus ( ) {
fileMenu = menuBar()−>addMenu( t r ( "&File" ) ) ;
fileMenu−>addAction (newAct ) ;
fileMenu−>addAction ( openAct ) ;
fileMenu−>addAction ( saveAct ) ;
Salvador Alemany Garrido– Introducción a Qt.– 38/64
39. Introducción Primeras pinceladas Ahora en serio Avanzado
QMainWindow
Toolbars: barras de herramientas
Creación de toolbars
creamos una instancia de QToolBar y la añadimos con
addToolbar, los elementos también son QActions.
Ejemplo
void MainWindow : : createToolBars ( )
{
f i l e T o o l B a r = addToolBar ( t r ( "File" ) ) ;
fileToolBar − >addAction (newAct ) ;
Salvador Alemany Garrido– Introducción a Qt.– 39/64
40. Introducción Primeras pinceladas Ahora en serio Avanzado
QString I
Clase de manejo de texto Unicode. Almacena una
cadena de QChars, siendo cada QChar de 16 bits
Usa compartición implícita de memoria, con copia
en escritura.
Dispone de funciones para convertir de y a números
Es muy recomendable manejar las listas de QStrings
usando QStringList
Salvador Alemany Garrido– Introducción a Qt.– 40/64
41. Introducción Primeras pinceladas Ahora en serio Avanzado
QString II
Dispone de 4 conversiones a const char *
toAscii(): Autoexplicativo
toLatin(): Convierte a una cadena de la codificación
latin-1(ISO 8859-1
toUtf8(): Convierte a UTF-8
toLocal8Bit(): A la codificación local
Salvador Alemany Garrido– Introducción a Qt.– 41/64
42. Introducción Primeras pinceladas Ahora en serio Avanzado
QString III
Gracias al sistema de tipos de C++ y al hecho de que
QString es implícitamente compartida, pueden ser
tratadas como tipos básicos como int.
Inicialización
Bastante típica, diversas alternativas:
QString str1 ( "Hello" ) ;
QString str2 = "Hello" ;
static const QChar data [4] = {0x0055 , 0x006e ,
0x10e3 , 0x03a3}; QString str3 ( data , 4 ) ;
También carácter a carácter.
O en retornos de funciones.
return str1 ;
Salvador Alemany Garrido– Introducción a Qt.– 42/64
43. Introducción Primeras pinceladas Ahora en serio Avanzado
Otros widgets básicos
Botones
QCheckBox, QPushButton, QRadioButton, QToolButton y
QCommandLinkButton.
Texto
QLineEdit, QPlainTextEdit, QTextEdit, QTextBrowser
Otros contenedores
QMDIArea, QTabWidget, QStackedWidget
Salvador Alemany Garrido– Introducción a Qt.– 43/64
44. Introducción Primeras pinceladas Ahora en serio Avanzado
Layouts
Basicamente se usan las siguientes posibilidades:
QHBoxLayout organiza los widgets en una fila horizontal
QVBoxLayout alínea los widgets en una columna vertical
QGridBoxLayout organiza los widgets en una rejilla, un
widget puede ocupar varias casillas
QFormLayout Alternativa de alto nive a QGridBoxLayout
para layouts de 2 columnas.
Salvador Alemany Garrido– Introducción a Qt.– 44/64
45. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
3 Ahora en serio
Extensiones a C++
Algunas clases de interés
Herramientas
Salvador Alemany Garrido– Introducción a Qt.– 45/64
46. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt Designer I
Simplemente
Escribir código de interfaces tiene mucho de aburrido,
repetitivo y rutinario. Es posible, en bastantes casos y
recomendable usar un diseñador de interfaces. Aparte
de eso las vemos tal cual las hacemos.
designer
Para, diseñar y crear interfaces de forma visual y
cómoda con Qt disponemos de Qt Designer, bien
standalone, bien integrado en Eclipse o Qt Creator
Salvador Alemany Garrido– Introducción a Qt.– 46/64
47. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt Designer
En imágenes I
La interfaz puede ser configurada para funcionar con
una sola o con varias ventanas.
Salvador Alemany Garrido– Introducción a Qt.– 47/64
48. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt Designer
En imágenes II
Salvador Alemany Garrido– Introducción a Qt.– 48/64
49. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt Designer
La mejor manera de aprender a usar un diseñador de
interfaces es usarlo.
En caso de duda consulta primero la documentación.
Salvador Alemany Garrido– Introducción a Qt.– 49/64
50. Introducción Primeras pinceladas Ahora en serio Avanzado
qmake I
Qmake es la herramienta de generación de Makefiles
oficial de Qt4.
Características:
Optimizado para Qt4
Automáticamente genera reglas de compilación
para moc y uic.
Genera proyectos para el Visual Studio.
Salvador Alemany Garrido– Introducción a Qt.– 50/64
51. Introducción Primeras pinceladas Ahora en serio Avanzado
qmake II
Variables I
Modificamos valores de una variable con la sintaxis:
VARIABLE ± = valor SOURCES Ficheros de código
fuente del proyecto.
Algunas variables de interés:
SOURCES: los ficheros de código fuente. SOURCES
+= file.cpp
HEADERS: cabeceras del proyecto. HEADERS +=
file.h
FORMS: Archivos de interfaces(.ui) FORMS +=
dialog.ui
TARGET: nombre de la aplicación o librería; por
defecto el nombre del proyecto
CONFIG: opciones, merece un vistazo en
profundidad
Salvador Alemany Garrido– Introducción a Qt.– 51/64
52. Introducción Primeras pinceladas Ahora en serio Avanzado
qmake III
RESOURCES: una lista de ficheros de recursos a
incluir
TEMPLATE: la plantilla a usar para el proyecto
disponemos de app, lib, subdirs(reglas para
subdirectorios), vcapp, vclib.
DEFINES: para incluir definiciones con el
preprocesador
QT: indica que componentes de Qt incluye el
proyecto, por defecto core y gui
Salvador Alemany Garrido– Introducción a Qt.– 52/64
53. Introducción Primeras pinceladas Ahora en serio Avanzado
qmake IV
Los módulos de Qt
Opción Modulo
core QtCore
gui QtGui
network QtNetwork
opengl QtOpenGL
sql QtSql
svg QtSvg
xml QtXml
xmlpatterns QtXmplPatterns
webkit QtWebKit
qt3support Qt3Support
Salvador Alemany Garrido– Introducción a Qt.– 53/64
54. Introducción Primeras pinceladas Ahora en serio Avanzado
qmake V
CONFIG
CONFIG es el cajón de sastre de las opciones.
Opción Descripción
release Crea el proyecto en modo release
debug Crea el proyecto en modo debug
debug_and_release Crea el proyecto en ambos modos
debug_and_release_target ídem y en subdirectorios
build_all compila todos los modos
warn_on Habilita todos los warnings posibles
warn_off Deshabilita bastantes warnings
Salvador Alemany Garrido– Introducción a Qt.– 54/64
55. Introducción Primeras pinceladas Ahora en serio Avanzado
qmake
Consejos y recordatorios
Comandos
Crear proyecto con: qmake -project
Generar Makefiles simplemente: qmake
Trucos
Usa QMAKE_LFLAGS += -s en modo release para
generar ejecutables más pequeños
Puedes dar opciones dependientes de plataforma
simplemente poniendo el nombre de la plataforma
seguido de unas llaves y las opciones entre ellas
Lee la documentación, hay para hacer 40
transparencias más, aparte de funcionalidades no
documentadas.
Salvador Alemany Garrido– Introducción a Qt.– 55/64
56. Introducción Primeras pinceladas Ahora en serio Avanzado
Qt Assistant
La aplicación
Es un sencillo y potente visor de documentación que
proporciona múltiples maneras de acceder a la
información. De forma jerárquica en contenidos,
búsquedas sobre el índice o todo el contenido y
marcadores.
Permite añadir nuestra propia documentación, si esta en
el formato qch(Qt compressed help).
¿Que información contiene?
Por defecto incluye la documentación de Qt, qmake, Qt
Assistant, Qt Dessigner, Qt Linguist, y en ocasiones Qt
Creator.
Salvador Alemany Garrido– Introducción a Qt.– 56/64
57. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
1 Introducción
2 Primeras pinceladas
3 Ahora en serio
4 Avanzado
Salvador Alemany Garrido– Introducción a Qt.– 57/64
58. Introducción Primeras pinceladas Ahora en serio Avanzado
Contenido
4 Avanzado
Programación Modelo-Vista
Salvador Alemany Garrido– Introducción a Qt.– 58/64
59. Introducción Primeras pinceladas Ahora en serio Avanzado
Componentes del modelo-vista
models Proporcionan
una interfaz estándar
que vistas y delegados
usan para acceder a los
datos. Los datos en si no están
almacenados en el modelo.
Views las vistas obtienen datos
del modelo y los muestran al
usuario.
Delegates Obtienen datos de los usuarios.
Salvador Alemany Garrido– Introducción a Qt.– 59/64
60. Introducción Primeras pinceladas Ahora en serio Avanzado
Las Graphics view
Las Graphics View proporcionan una superficie para
gestionar e interactuar con un gran número de
componentes 2D personalizados.
Como aproximación al Model-View
Es un modelo basado en componentes. Varias vistas
pueden observar una misma escena y una escena puede
contener items de variados shapes geométricos.
La escena: Proporcionada por QGraphicsScene
La vista: Proporcionada por QGraphicsView
El item: proporcionado por QGraphicsItem, y
QGraphicsWidget(No hereda de QWidget)
Salvador Alemany Garrido– Introducción a Qt.– 60/64
61. Introducción Primeras pinceladas Ahora en serio Avanzado
Otros puntos de interes I
Dentro de QtGui
Qt Style Sheets:1 hojas de estilo con una sintaxis
similar a la del CSS web.
Drag and Drop: arrastrar y soltar
La página All Overviews and HOWTOs puede ser un
buen punto de inicio para buscar en caso de buscar
información sobre temas de interés como la
internacionalización, intercomunicación de
procesos, teclados, plugins, integración con el
escritorio...
1
Consultar las páginas con estos nombres
Salvador Alemany Garrido– Introducción a Qt.– 61/64
62. Introducción Primeras pinceladas Ahora en serio Avanzado
Otros puntos de interes II
General
QtConcurrent, primitivas orientadas a objetos para
programación multihilo, así como apis de alto nivel.
Otros cosas a tener en cuenta al desarrollar
aplicaciones como manejo de eventos(más
general), y recursos(qrc)
Salvador Alemany Garrido– Introducción a Qt.– 62/64
63. Introducción Primeras pinceladas Ahora en serio Avanzado
Fuentes
Recursos útiles si quieres profundizar
Web de la documentación de Qt
C++ Gui Programming with Qt4, 2nd Edition
Jasmin Blanchette y Mark Summerfield
Edición vieja disponible para descarga.
An introduction to design patterns in C++ with Qt 4
Ezust, Alan, Upper Saddle River [etc.]
Salvador Alemany Garrido– Introducción a Qt.– 63/64
64. Introducción Primeras pinceladas Ahora en serio Avanzado
¿Preguntas o sugerencias?
Salvador Alemany Garrido
salalgar@fiv.upv.es
Salvador Alemany Garrido– Introducción a Qt.– 64/64