Qt (biblioteca)
Qt es un framework multiplataforma orientado a objetos ampliamente usado para desarrollar programas (software) que utilicen interfaz gráfica de usuario, así como también diferentes tipos de herramientas para la línea de comandos y consolas para servidores que no necesitan una interfaz gráfica de usuario.
Qt | |||
---|---|---|---|
![]() | |||
![]() Qt Designer usado para el diseño del GUI. | |||
Información general | |||
Tipo de programa | Biblioteca de desarrollo | ||
Autor | Haavard Nord y Eirik Chambe-Eng.[1] | ||
Desarrollador |
| ||
Modelo de desarrollo | Software libre y de código abierto | ||
Lanzamiento inicial | 20 de mayo de 1995 | ||
Licencia |
GNU LGPL 2.1 GNU GPL 2 y 3 Propietaria[2] | ||
Estado actual | Activo | ||
Información técnica | |||
Programado en | C++ | ||
Versiones | |||
Última versión estable | 6.7 (info) ( 02 de abril de 2024 (4 meses y 16 días)) | ||
Última versión en pruebas | 6.7 Beta 120 de diciembre de 2023 | ||
Archivos legibles | |||
| |||
Archivos editables | |||
| |||
Enlaces | |||
![](http://up.wiki.x.io/wikipedia/commons/thumb/7/7b/Free_and_open-source-software_display_servers_and_UI_toolkits.svg/220px-Free_and_open-source-software_display_servers_and_UI_toolkits.svg.png)
Qt es desarrollada como un software libre y de código abierto a través de Qt Project, donde participa tanto la comunidad, como desarrolladores de Nokia, Digia y otras empresas.[3] Anteriormente, era desarrollado por la división de software de Qt de Nokia, que entró en vigor después de la adquisición por parte de Nokia de la empresa noruega Trolltech, el productor original de Qt, el 17 de junio de 2008.[4] Qt es distribuida bajo los términos de GNU Lesser General Public License y otras. Por otro lado, Digia está a cargo de las licencias comerciales de Qt desde marzo de 2011.
Qt es utilizada en KDE Plasma, entorno de escritorio para sistemas como GNU/Linux o FreeBSD, entre otros.
Propósitos y características
editarQt utiliza el lenguaje de programación C++ de forma nativa, adicionalmente puede ser utilizado en varios otros lenguajes de programación a través de bindings. También es usada en sistemas informáticos embebidos para automoción, aeronavegación y aparatos domésticos como frigoríficos.[5]
Funciona en 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 métodos para el manejo de ficheros, además de estructuras de datos tradicionales.
Historia
editarFue 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 Tecnología de Trondheim, donde ambos se graduaron con una maestría en ciencias de la computación. El kit de herramientas se llamó Qt porque la letra Q lucía 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".[1]
Inicialmente Qt apareció como biblioteca desarrollada por Trolltech (en aquel momento «Quasar Technologies») en 1992 siguiendo un desarrollo basado en el código abierto, pero no completamente libre. Originalmente permitía 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 permitía redistribuir versiones modificadas de Qt.
Se usó activamente en el desarrollo del escritorio KDE (entre 1996 y 1998), con un notable éxito y rápida expansión, camino de convertirse en uno de los escritorios más populares de GNU/Linux.
Este hecho causaba preocupación desde el proyecto GNU, ya que veían como una amenaza para el software libre que uno de los escritorios libres más usados se apoyase en software propietario. Para contrarrestar esta situación 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 establecía que si Trolltech dejaba de desarrollar la versión gratuita y semi-libre de Qt la propia Fundación podría liberar la última versión publicada de la biblioteca Qt bajo una licencia tipo BSD[6]
Con la versión 2.0 se cambió a la licencia Q Public License, considerada de código abierto. Este cambio pretendía acallar las críticas 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).[7]
El 4 de septiembre de 2000, Trolltech comenzó a ofrecer la biblioteca Qt en su versión 2.1 bajo la licencia GPL en su versión para Linux. La versión para Mac OS X no se publicó bajo GPL hasta junio de 2003, mientras que la versión para Windows fue publicada bajo la licencia GPL en junio de 2005.
El 18 de enero de 2008, Trolltech anunció que también ofrecería Qt bajo la licencia GPL v3.
En junio de 2008, Nokia adquirió Trolltech, para desarrollar aplicaciones de escritorio y para dispositivos móviles. Esta última fue integrada a Nokia como «Qt Software».[4]
El 14 de enero de 2009, Nokia anunció que Qt v4.5 se licenciaría adicionalmente bajo la licencia LGPL 2.1, con el lema «Qt Everywhere».[8]
Nokia anunció que va a detener sus desarrollos en Symbian para usar la plataforma de Microsoft para sus teléfonos inteligentes en febrero de 2011.
El 9 de agosto de 2012, Digia anunció un acuerdo con Nokia para la adquisición de Qt. Algunos de los planes de Digia son el desarrollo de Qt para Android, iOS y Windows 8.[9]
Qt cuenta actualmente con un sistema de triple licencia: GPL v2/v3 para el desarrollo de software de código abierto y software libre, la licencia de pago QPL para el desarrollo de aplicaciones comerciales, y a partir de la versión 4.5 una licencia gratuita pensada para aplicaciones comerciales, LGPL.
Plataformas
editarQt se encuentra disponible para sistemas tipo Unix con el servidor gráfico X Window System (Linux, BSDs, Unix), para Apple Mac OS X, para sistemas Microsoft Windows, para Linux integrado (en inglés Embedded Linux), para sistemas embebidos como PDA, Teléfono inteligente, etc. y para dispositivos que utilizan Windows CE[10]
Qt Software anunció el 20 de octubre de 2008 una versión de Qt para la plataforma S60.[11][12]
También está disponible QSA (Qt Scripts for Applications), que, basándose en ECMAScript/JavaScript, permite introducir y crear scripts en las aplicaciones creadas con Qt.
Hay tres ediciones de Qt disponibles en cada una de estas plataformas, llamadas:
- GUI Framework – edición con nivel reducido de GUI, orientado a redes y bases de datos.
- Full Framework – edición completa comercial
- Open Source – edición completa Open Source
Bindings
editarQt dispone de una serie de bindings para diversos lenguajes de programación:
- PyQt – Bindings GPL/Comercial para Python.
- PySide[13] – LGPL bindings para Python de OpenBossa (subsidiario de Nokia).
- PythonQt[14] – LGPL bindings para Python.
- Qyoto[15] – Bindings para C# u otros lenguajes.NET. Existe un conjunto adicional de bindings Kimono[16] para KDE.
- QtRuby[17] – Bindings para Ruby. Existe un conjunto adicional de bindings, Korundum para KDE.
- Qt Jambi[18] – Bindings para Java.
- QtAda[19] – Bindings para Ada.
- FreePascal Qt4[20] – Bindings para Pascal.
- Perl Qt4[21] – Bindings para Perl.
- PHP-Qt – Bindings para PHP.
- Qt Haskell[22] – Bindings para Haskell.
- lqt[23] – Bindings para Lua.
- DaoQt[24] – Bindings para Dao.
- QtD[25] – Binding para D.
Ejemplo de programación
editarEl siguiente es un ejemplo usando Qt del conocido programa ¡Hola Mundo!, donde se crea una ventana con una etiqueta (QLabel
) mostrando el texto ¡Hola Mundo!
.
/******** Hola.cpp **********/
#include <QtGui/QApplication>
#include <QtGui/QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label( QString::fromUtf8("¡Hola Mundo!") );
label.show();
return app.exec();
}
- Compilación y ejecución
1. Se crea la carpeta Hola
2. Se crea el archivo Hola.cpp
en la carpeta Hola
3. En un emulador de terminal descender a la carpeta Hola y ejecutar:
- a)
qmake -project
- b)
qmake
- c)
make
/gmake
/nmake
- según el sistema operativo o de compilación
4. Para ejecutar el programa:
- d)
./release/Hola
(en Windows:release\Hola.exe
)
Usos
editarOrganizaciones que utilizan Qt
editarDebido a la sencillez, robustez, rendimiento nativo, compatibilidad multi-plataforma y ambas licencias, de código abierto y comerciales; muchas organizaciones en muchas partes del mundo utilizan Qt. Estas incluyen, pero no se limitan a: Agencia Espacial Europea,[26] DreamWorks,[27][28] Lucasfilm,[29][30] Panasonic,[31] Philips,[32] Samsung,[33] Siemens AG,[34] Volvo,[35] Walt Disney Animation Studios,[36] Blizzard Entertainment,[37] Electronic Arts,[38] AMD, Research In Motion,[39] HP.[40]
Aplicaciones escritas en Qt
editarEjemplos de aplicaciones que utilizan Qt son: Autodesk Maya,[41][42] Mathematica,[43] Google Earth,[44] el IDE RStudio,[45] Spotify para Linux,[46] la máquina virtual VirtualBox, VLC media player,[47] y AMD Radeon Software Crimson Edition.[48]
- Adobe Photoshop Album, aplicación para organizar imágenes.[49]
- Avidemux, programa libre para la edición y procesamiento de video.
- Doxygen, API generadora de documentación.
- Gadu-Gadu, popular cliente polaco de mensajería instantánea.
- KDE, popular entorno de escritorio para sistemas operativos tipo-Unix.[50]
- KDE Frameworks, una biblioteca base para gran cantidad de aplicaciones KDE, incluyendo Amarok, K3b, KDevelop, Calligra Suite entre otros.
- Last.fm Player, el cliente de escritorio para la popular comunidad web de música y radio por internet.
- Launchy, programa de código abierto para ejecutar aplicaciones para Windows.
- LMMS, secuenciador y sintetizador de música.
- LyX, un GUI para LaTeX.
- Mathematica, la versión de Linux usa Qt para el GUI.
- MythTV, grabador de vídeo digital de código abierto.
- Neural Designer, aplicación para la minería de datos.
- Psi, cliente de mensajería instantánea para XMPP.
- Quantum GIS, sistema de Información Geográfica.
- RealFlow, herramienta de simulación de fluidos.[42]
- Scribus, aplicación para la publicación de escritorio.
- Skype, aplicación VOIP.[51]
- TeamSpeak, aplicación multiplataforma para la comunicación con voz.
- Tlen.pl, popular cliente polaco de mensajería instantánea.
- TOra, herramienta para la administración de bases de datos.[52]
- sMovieDB, catalogador/gestor de películas.
- Pandectas, aplicación para dibujo en pizarra digital.
Véase también
editar- Qt Creator, un entorno de desarrollo integrado para Qt desarrollado por Qt Software
- Aplicaciones Qt y KDE
- GTK+ biblioteca alternativa, utilizada en el entorno de escritorio GNOME
- QtScript
- qmake
Referencias
editar- ↑ a b Blanchette, Jasmin; Summerfield, Mark (junio de 2006). «A Brief History of Qt». C++ GUI Programming with Qt 4 (1st edición). Prentice-Hall. pp. xv-xvii. Consultado el 5 de agosto de 2013.
- ↑ «Qt Licensing — A cross-platform application and UI framework».
- ↑ Knoll, Lars (21 de octubre de 2011). «The Qt Project is live!». Consultado el 9 de agosto de 2012.
- ↑ a b «The Nokia acquisition». Archivado desde el original el 19 de enero de 2009.
- ↑ «New 'Cool' Developments». 28 de agosto de 2011.
- ↑ KDE Free Qt Foundation
- ↑ The Evolution of the QPL
- ↑ Qt Software — LGPL License Option Added to Qt January 14, 2009
- ↑ «Digia to acquire Qt from Nokia» (en inglés). 9 de agosto de 2012. Archivado desde el original el 5 de marzo de 2013. Consultado el 9 de agosto de 2012.
- ↑ Qt Software — Qt for Windows CE
- ↑ Qt Software — Technology Preview - Qt for S60
- ↑ Qt Labs Blogs — We’re porting Qt to S60!
- ↑ PySide
- ↑ PythonQt
- ↑ Qyoto
- ↑ Kimono
- ↑ QtRuby
- ↑ Qt Jambi
- ↑ QtAda Archivado el 12 de abril de 2009 en Wayback Machine.
- ↑ FreePascal QT4
- ↑ «Perl Qt4». Archivado desde el original el 20 de enero de 2009. Consultado el 5 de julio de 2009.
- ↑ Qt Haskell
- ↑ lqt
- ↑ DaoQt
- ↑ QtD
- ↑ «Qt in the European Space Agency». Archivado desde el original el 23 de julio de 2011.
- ↑ Behind the Scenes at DreamWorks Animation: Making the Apps that Make the Movies. Archivado desde el original el 31 de octubre de 2015. Consultado el 12 de noviembre de 2015.
- ↑ UI & System Design Challenges for the NxG Lighting Tool. Archivado desde el original el 31 de octubre de 2015. Consultado el 12 de noviembre de 2015.
- ↑ «Lucasfilm Entertainment Company Ltd.».
- ↑ «Qt in Visual Effects». Archivado desde el original el 23 de julio de 2011.
- ↑ «Panasonic selects Qt for HD video system». Archivado desde el original el 23 de julio de 2011.
- ↑ «Qt in IP Communications». Archivado desde el original el 23 de julio de 2011.
- ↑ «Qt in Home Media». Archivado desde el original el 23 de julio de 2011.
- ↑ «Qt helped Siemens deliver a C++ development platform for manufacturing software GUIs». Archivado desde el original el 14 de julio de 2011.
- ↑ «Volvo Mobility Systems». Archivado desde el original el 14 de julio de 2011.
- ↑ «Qt helped Walt Disney reduce development time spent on its cross-platform feature film production application». Archivado desde el original el 14 de julio de 2011.
- ↑ «Blizzard's additions/modifications to Qt».
- ↑ «Open Source - Electronic Arts».
- ↑ «Qt for Blackberry Tablet OS & BB10». Archivado desde el original el 18 de enero de 2013. Consultado el 3 de enero de 2013.
- ↑ «Developing Innovative Desktop and Embedded HP Products with Qt». Archivado desde el original el 5 de enero de 2012. Consultado el 3 de enero de 2013.
- ↑ «Qt in Autodesk». Archivado desde el original el 23 de julio de 2011.
- ↑ a b «Qt in visual effects». Archivado desde el original el 23 de julio de 2011.
- ↑ «Qt delivered advanced, cross-platform C++ GUI for Mathematica’s development team». Archivado desde el original el 23 de agosto de 2014. Consultado el 12 de noviembre de 2015.
- ↑ «Google Earth Includes a Web Browser». Googlesystem.blogspot.de. 15 de junio de 2010. Consultado el 8 de abril de 2013.
- ↑ Verzani, John (2011). Getting Started with RStudio. O'Reilly Media, Inc. p. 4. ISBN 9781449309039.
- ↑ «10 Qt Use Cases You Didn’t Know». Archivado desde el original el 4 de enero de 2015.
- ↑ «Qt Interface».
- ↑ Mark Walton (2 de noviembre de 2015). «AMD Radeon Software Crimson: A new name and a new look for Catalyst».
- ↑ Qt Software — Adobe Photoshop Elements® Album
- ↑ «The KDE development platform».
- ↑ «Qt in use - Skype.». Archivado desde el original el 26 de febrero de 2009.
- ↑ TOra uses the Qt library
Enlaces externos
editar- Wikimedia Commons alberga una categoría multimedia sobre Qt.
- Wikilibros alberga un libro o manual sobre Introducción a Patrones de Diseño en C++ con Qt4.
- qt.io, sitio web de Qt
- Qt Forum Español, foro de Qt para comunidad hispanohablante
- Duarte Corporation, El catálogo más extenso de videotutoriales relacionados con Qt en la comunidad hispanohablante.