conceptos de qt

10
Qt Conceptos Generales de Qt Qt: es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones con una interfaz gráfica de usuario así como también para el desarrollo de programas sin interfaz gráfica como herramientas para la línea de comandos y consolas para servidores. Qt utiliza el lenguaje de programación C++ de forma nativa. Funciona en todas las principales plataformas, y tiene un amplio apoyo. El API de la biblioteca cuenta con métodos para acceder a bases de datos mediante SQL, así como uso de XML, gestión de hilos, soporte de red, una API multiplataforma unificada para la manipulación de archivos y una multitud de otros para el manejo de ficheros, además de estructuras de datos tradicionales. Distribuida bajo los términos de GNU Lesser General Public License (y otras), Qt es software libre y de código abierto. Lenguaje C++ C++: es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma. Compilador Compilador: es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación. Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de

Upload: jhonatan-martir

Post on 18-Aug-2015

222 views

Category:

Documents


4 download

DESCRIPTION

Conceptos Basicos de la Biblioteca Qt

TRANSCRIPT

Qt Conceptos Generales de Qt Qt: es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones con una interfaz grfica de usuario as como tambin para el desarrollo de programas sin interfaz grfica como herramientas para la lnea de comandos y consolas para servidores. Qt utiliza el lenguaje de programacin C++ de forma nativa. Funciona en todas las principales plataformas, y tiene un amplio apoyo. El API de la biblioteca cuenta con mtodos para acceder a bases de datos mediante SQL, as como uso de XML, gestin de hilos, soporte de red, una API multiplataforma unificada para la manipulacin de archivos y una multitud de otros para el manejo de ficheros, adems de estructuras de datos tradicionales. Distribuida bajo los trminos de GNU Lesser General Public License (y otras), Qt es software libre y de cdigo abierto. Lenguaje C++ C++: es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido. Posteriormente se aadieron facilidades de programacin genrica, que se sum a los otros dos paradigmas que ya estaban admitidos (programacin estructurada y la programacin orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programacin multiparadigma. Compilador Compilador: es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este proceso de traduccin se conoce como compilacin. Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a como piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. Entorno de Desarrollo Integrado IDE (entorno de desarrollo integrado): es un programa informtico compuesto por un conjunto de herramientas de programacin. Un IDE es un entorno de programacin que ha sido empaquetado como un programa de aplicacin, es decir, consiste en un editor de cdigo, un compilador, un depurador y un constructor de interfaz grfica (GUI). Biblioteca Biblioteca: es un conjunto de subprogramas utilizados para desarrollar software. Las bibliotecas contienen cdigo y datos, que proporcionan servicios a programas independientes, es decir, pasan a formar parte de estos. Esto permite que el cdigo y los datos se compartan y puedan modificarse de forma modular. Algunos programas ejecutables pueden ser a la vez programas independientes y bibliotecas, pero la mayora de estas no son ejecutables. Ejecutables y bibliotecas hacen referencias (llamadas enlaces) entre s a travs de un proceso conocido como enlace, que por lo general es realizado por un software denominado enlazador. Historia de Qt Fue desarrollado inicialmente por Haavard Nord (CEO de Trolltech) y Eirik Chambe-Eng (presidente de Trolltech). Haavard y Eirik se reunieron en el Instituto Noruego de Tecnologa de Trondheim, donde ambos se graduaron con una maestra en ciencias de la computacin. El kit de herramientas se llam Qt porque la letra Q luca atractiva en la fuente Emacs la cual era muy usada por Haavard en su trabajo, y "t" se inspir en Xt, el kit de herramientas X "X Tool kit". Inicialmente Qt apareci como biblioteca desarrollada por Trolltech (en aquel momento Quasar Technologies) en 1992 siguiendo un desarrollo basado en el cdigo abierto, pero no completamente libre. Originalmente permita desarrollo de software cerrado mediante la compra de una licencia comercial, o el desarrollo de software libre usando la licencia Free Qt. Esta ltima no era una licencia real de software libre dado que no permita redistribuir versiones modificadas de Qt. Se us activamente en el desarrollo del escritorio KDE (entre 1996 y 1998), con un notable xito y rpida expansin, camino de convertirse en uno de los escritorios ms populares de GNU/Linux. Este hecho causaba preocupacin desde el proyecto GNU, ya que vean como una amenaza para el software libre que uno de los escritorios libres ms usados se apoyase en software propietario. Para contrarrestar esta situacin se plantearon dos ambiciosas iniciativas: por un lado el equipo de GNU en 1997 inici el desarrollo del entorno de escritorio GNOME con GTK+ para GNU/Linux. Por otro lado se intent hacer una biblioteca compatible con Qt pero totalmente libre, llamada Harmony. En 1998 desarrolladores de KDE se reunieron con Trolltech para establecer la KDE Free Qt Foundation, que estableca que si Trolltech dejaba de desarrollar la versin gratuita y semi-libre de Qt la propia Fundacin podra liberar la ltima versin publicada de la biblioteca Qt bajo una licencia tipo BSD. Con la versin 2.0 se cambi a la licencia Q Public License, considerada de cdigo abierto. Este cambio pretenda acallar las crticas a Qt y KDE que alegaban que no era software libre. Sin embargo, QPL no era compatible con la licencia GPL que usaba KDE, por lo que hubo voces que afirmaban que se estaba violando la licencia GPL al mezclar software QPL (la biblioteca Qt) con software GPL (KDE). El 4 de septiembre de 2000, Trolltech comenz a ofrecer la biblioteca Qt en su versin 2.1 bajo la licencia GPL en su versin para Linux. La versin para Mac OS X no se public bajo GPL hasta junio de 2003, mientras que la versin para Windows fue publicada bajo la licencia GPL en junio de 2005. El 18 de enero de 2008, Trolltech anunci que tambin ofrecera Qt bajo la licencia GPL v3. En junio de 2008, Nokia adquiri Trolltech, para desarrollar aplicaciones de escritorio y para dispositivos mviles. Esta ltima fue integrada a Nokia como Qt Software. El 14 de enero de 2009, Nokia anunci que Qt v4.5 se licenciara adicionalmente bajo la licencia LGPL 2.1, con el lema Qt Everywhere. Nokia anunci que va a detener sus desarrollos en Symbian para usar la plataforma de Microsoft para sus telfonos inteligentes en febrero de 2011. El 9 de agosto de 2012, Digia anunci un acuerdo con Nokia para la adquisicin de Qt. Algunos de los planes de Digia son el desarrollo de Qt para Android, iOS y Windows 8. Qt cuenta actualmente con un sistema de triple licencia: GPL v2/v3 para el desarrollo de software de cdigo abierto y software libre, la licencia de pago QPL para el desarrollo de aplicaciones comerciales, y a partir de la versin 4.5 una licencia gratuita pensada para aplicaciones comerciales, LGPL. Ventajas de Qt Qt es completamente gratuito para aplicaciones de cdigo abierto. Las herramientas, libreras y clases estn disponibles para casi todas las plataformas Unix y sus derivados (como Linux, MacOS X, Solaris, etc.) como tambin para la familia Windows, por lo que una aplicacin puede ser compilada y utilizada en cualquier plataforma sin necesidad de cambiar el cdigo y la aplicacin se ver y actuar mejor que una aplicacin nativa. Qt tiene una extensa librera con clases y herramientas para la creacin de ricas aplicaciones. Estas libreras y clases estn bien documentadas, son muy fciles de usar y tienen una gran herencia de programacin orientada a objetos lo cual hace de la programacin de interfaces grficas una aventura placentera. Utilidades de Qt Permite disear y construir widgets y dilogos usando forms con los mismos widgets que se usarn en la aplicacin. Los componentes creados con Qt designer pueden hacer uso del mecanismo de seales slots. El GUI resultante puede previsualizarse para comprobar que tiene el aspecto y se comporta segn desebamos. Qt Designer puede usarse para desarrollar la aplicacin completa o algunos de los forms solamente. Los forms que se crean usando Qt Designer acaban traducindose en cdigo C++. Existe otra utilidad llamada Qt Creator que incluye a Qt Designer como una de sus utilidades. Qt Creator permite el desarrollo de la aplicacin completa, y no solo el diseo de los forms. Adems de Qt-Designer, Qt proporciona otras herramientas muy tiles al desarrollar una aplicacin. La primera de ellas es Qt Assistant, que nos permite navegar por la documentacin on-line de Qt. Entre otras cosas podemos consultar la documentacin de cada una de las clases, as como ejemplos de muchas de ellas. Adems contiene manuales de las otras utilidades de Qt (Qt Designer, Qt Linguist, qmake). Clases de Qt La clase QMainWindow proporciona una ventana principal de la aplicacin. Descripcin Detallada La clase QMainWindow proporciona una ventana principal de la aplicacin. Marco Qt Ventana Principal. Una ventana principal proporciona un marco para la construccin de la interfaz de usuario de una aplicacin. Qt tiene QMainWindow y sus clases relacionadas para la gestin de la ventana principal. QMainWindow tiene su propia disposicin a la que se puede aadir QToolBars, QDockWidgets, un QMenuBar, y un QStatusBar. El diseo tiene un rea central que puede ser ocupado por cualquier tipo de artilugio. Usted puede ver una imagen de la disposicin a continuacin. QWidget Clase La clase QWidget es la clase base de todos los objetos de interfaz de usuario. Descripcin Detallada La clase QWidget es la clase base de todos los objetos de interfaz de usuario. El widget es el tomo de la interfaz de usuario: recibe ratn, teclado y otros eventos del sistema de ventanas, y pinta una representacin de s mismo en la pantalla. Cada widget es rectangular, y que estn ordenadas en un orden Z. Un widget es recortado por su padre y por los widgets en frente de ella. Un widget que no est incrustado en un widget padre se llama una ventana. Por lo general, las ventanas tienen un marco y una barra de ttulo, aunque tambin es posible crear ventanas sin tales decoracin usando banderas ventana adecuada). En Qt, QMainWindow y las diversas subclases de QDialog son los tipos ms comunes de las ventanas. Constructor de cada widget de acepta uno o dos argumentos habituales: QWidget * parent = 0 es el padre del nuevo widget. Si es 0 (por defecto), el nuevo widget ser una ventana. Si no, va a ser un hijo de los padres, y ser limitada por la geometra de los padres (a menos que especifique Qt :: ventana como la bandera de la ventana). Qt :: WindowFlags f = 0 (donde est disponible), establece las banderas de la ventana; el valor predeterminado es adecuado para casi todos los widgets, pero para obtener, por ejemplo, una ventana sin marco del sistema de ventanas, debe utilizar banderas especiales. QWidget tiene muchas funciones miembro, pero algunos de ellos tienen poca funcionalidad directa; por ejemplo, QWidget tiene una propiedad de fuente, pero nunca utiliza esta misma. Hay muchas subclases que proporcionan funcionalidad real, como QLabel, QPushButton, QListWidget y QTabWidget. QString Clase La clase QString ofrece una cadena de caracteres Unicode. Descripcin Detallada La clase QString ofrece una cadena de caracteres Unicode. QString tiendas de una cadena de QChars 16 bits, donde cada QChar corresponde un carcter Unicode 4.0. (Caracteres Unicode con valores de cdigo por encima de 65535 se almacenan utilizando pares suplentes, es decir, dos QChars consecutivos.) Unicode es un estndar internacional que apoya la mayora de los sistemas de escritura en uso hoy en da. Es un superconjunto de US-ASCII (ANSI X3.4-1986) y Latin-1 (ISO 8859-1), y todos los EE.UU.-ASCII / Latin-1 caracteres estn disponibles en las mismas posiciones de cdigo. Detrs de las escenas, QString utiliza intercambio implcito (copy-on-write) para reducir el uso de memoria y evitar la copia innecesaria de datos. Esto tambin ayuda a reducir la sobrecarga inherente de almacenamiento de caracteres de 16 bits en lugar de caracteres de 8 bits. Adems de QString, Qt tambin ofrece la clase QByteArray para almacenar bytes primas y tradicional de 8 bits '\ cuerdas 0'terminados. Para la mayora de los propsitos, QString es la clase que desea utilizar. Se utiliza en todo el API de Qt, y el soporte Unicode garantiza que sus aplicaciones sern fciles de traducir, si desea ampliar el mercado de su aplicacin en algn momento. Los dos casos principales en QByteArray es apropiado es cuando usted necesita para almacenar datos binarios en bruto, y cuando la conservacin de la memoria es fundamental (como en los sistemas integrados). QStringList Clase La clase QStringList ofrece una lista de cadenas. Descripcin Detallada La clase QStringList ofrece una lista de cadenas. QStringList hereda de QList . Como QList, QStringList est implcita compartida. Proporciona acceso basado en el ndice rpido, as como inserciones y eliminaciones rpidas. Pasando listas de cadenas como parmetros de valor es a la vez rpido y seguro. Todas las funcionalidades de QList tambin se aplica a QStringList. Por ejemplo, puede utilizar estaVacia () para comprobar si la lista est vaca, y usted puede llamar a funciones como append (), anteponga (), insert (), replace (), removeAll (), RemoveAt (), removeFirst () , removeLast (), y removeOne () para modificar un QStringList. Adems, QStringList proporciona algunas funciones de confort que hacen que el manejo de listas de cadenas ms fcil. QByteArray Clase La clase QByteArray proporciona una matriz de bytes. Descripcin Detallada La clase QByteArray proporciona una matriz de bytes. QByteArray se puede utilizar para almacenar tanto bytes primas (incluyendo '\ 0' s) y tradicional 8-bit '0' \ cadenas terminadas. Usando QByteArray es mucho ms conveniente que usar const char *. Detrs de las escenas, siempre se asegura de que los datos es seguido por un '\ 0' terminador, y utiliza el intercambio implcito (copy-on-write) para reducir el uso de memoria y evitar la copia innecesaria de datos. Adems de QByteArray, Qt tambin ofrece la clase QString para almacenar datos de cadena. Para la mayora de los propsitos, QString es la clase que desea utilizar. Almacena caracteres Unicode de 16 bits, por lo que es fcil de almacenar no ASCII / caracteres no latinos-1 en su aplicacin. Adems, QString se utiliza en todo en la API de Qt. Los dos casos principales en QByteArray es apropiado es cuando usted necesita para almacenar datos binarios en bruto, y cuando la conservacin de la memoria es fundamental (por ejemplo, con Qt para Linux Embedded). Una manera de inicializar un QByteArray es simplemente para pasar un const char * a su constructor. QTextStream Clase La clase QTextStream ofrece una interfaz cmoda para la lectura y la escritura de texto. Descripcin Detallada La clase QTextStream ofrece una interfaz cmoda para la lectura y la escritura de texto. QTextStream puede operar en un QIODevice, un QByteArray o una QString. Utilizacin de operadores de streaming de QTextStream, se puede leer bien y escribir palabras, lneas y nmeros. Para la generacin de texto, QTextStream soporta opciones de formato para el relleno de campo y la alineacin, y el formato de los nmeros. QFile Clase La clase QFile proporciona una interfaz para la lectura y escritura a los archivos. Descripcin Detallada La clase QFile proporciona una interfaz para la lectura y escritura a los archivos. QFile es un dispositivo de E / S para leer y escribir archivos de texto y binarios y recursos. A QFile puede ser utilizado por s mismo o, ms convenientemente, con un QTextStream o QDataStream. El nombre del archivo por lo general se pasa en el constructor, pero se puede ajustar en cualquier momento utilizando setFileName (). QFile espera que el separador de archivo a ser '/' independientemente del sistema operativo. El uso de otros separadores (por ejemplo, '\') no es compatible. Puede comprobar la existencia de un archivo usando existe (), y eliminar un archivo usando remove (). (Operaciones relacionadas Ms de sistema de archivos avanzado son proporcionados por QFileInfo y QDir.) El archivo se abre con open (), cerrado con close (), y se inund con flush (). Los datos se suelen leer y escribir usando QDataStream o QTextStream, pero tambin se puede llamar a las funciones heredadas-QIODevice leen (), readLine (), readAll (), write (). QFile tambin hereda getChar (), putChar (), y ungetChar (), que funciona un carcter a la vez. El tamao del archivo es devuelto por tamao (). Puede obtener la posicin actual del fichero usando pos (), o trasladarse a una nueva posicin archivo usando seek (). Si usted ha llegado al final del archivo, atEnd () devuelve true. QList Clase La clase QList es una clase de plantilla que proporciona listas. Descripcin Detallada La clase QList es una clase de plantilla que proporciona listas. QList es una de las clases de contenedores genricos de Qt. Almacena una lista de valores y proporciona acceso basado en ndices rpida, as como inserciones y eliminaciones rpidas. QList , QLinkedList y QVector proporcionar una funcionalidad similar. He aqu un resumen: Para la mayora de los propsitos, QList es la clase de derecho de uso. Su API basados en ndices es ms conveniente que la API basada en iterador de QLinkedList, y por lo general es ms rpido que QVector debido a la forma en que almacena sus artculos en la memoria. Tambin se ampla para menos cdigo en tu ejecutable. Si necesita una lista de bienes vinculados, con garantas de inserciones de tiempo constantes en la mitad de la lista e iteradores de artculos en lugar de ndices, utilice QLinkedList. Si usted quiere los artculos a ocupar posiciones de memoria adyacentes, utilice QVector. Internamente, QList se representa como una matriz de punteros a los elementos de tipo T. Si T es en s mismo un tipo de puntero o un tipo bsico que no es ms grande que un puntero, o si T es una de las clases compartidas de Qt, entonces QList almacena los elementos directamente en la matriz de punteros. Para las listas en virtud de mil artculos, esta representacin array permite inserciones muy rpidos en el medio, y que permite el acceso basado en ndices. Por otra parte, las operaciones como Anteponer () y append () son muy rpido, porque QList preasigna memoria en ambos extremos de su matriz interna. (Ver algortmico Complejidad para ms detalles.) Tenga en cuenta, sin embargo, que para los elementos de la lista no compartidos que son mayores que un puntero, cada anexar o insercin de un nuevo tema requiere asignar el nuevo elemento en el montn, y esta asignacin por artculo podra hacer un QVector mejor opcin en los casos que hacen un montn de anexar o insertar, ya QVector asigna memoria para sus artculos en una sola asignacin del montn. Tenga en cuenta que la matriz interna slo alguna vez se hace ms grande durante la vida de la lista. Nunca se contrae. La matriz interna se desasigna por el destructor y por el operador de asignacin, cuando se asigna una lista a otra.