Qt (software)

Ajustar Compartir Imprimir Citar
Marco orientado hacia los objetos para el desarrollo de programas informáticos

Qt (pronunciado "cute") es un software multiplataforma para crear interfaces gráficas de usuario, así como aplicaciones multiplataforma que se ejecutan en varias plataformas de software y hardware, como Linux., Windows, macOS, Android o sistemas integrados con poco o ningún cambio en el código base subyacente sin dejar de ser una aplicación nativa con capacidades y velocidad nativas.

Qt está siendo desarrollado actualmente por The Qt Company, una empresa que cotiza en bolsa, y Qt Project bajo el gobierno de código abierto, que involucra a desarrolladores individuales y organizaciones que trabajan para avanzar en Qt. Qt está disponible bajo licencias comerciales y licencias de código abierto GPL 2.0, GPL 3.0 y LGPL 3.0.

Propósitos y habilidades

Qt se utiliza para desarrollar interfaces gráficas de usuario (GUI) y aplicaciones multiplataforma que se ejecutan en las principales plataformas de escritorio y en la mayoría de las plataformas móviles o integradas. La mayoría de los programas GUI creados con Qt tienen una interfaz de apariencia nativa, en cuyo caso Qt se clasifica como un kit de herramientas de widgets. También se pueden desarrollar programas que no sean GUI, como herramientas de línea de comandos y consolas para servidores. Un ejemplo de un programa no GUI que usa Qt es el marco web Cutelyst.

Qt es compatible con varios compiladores, incluido el compilador GCC C++, la suite Visual Studio, PHP a través de una extensión para PHP5 y tiene un amplio soporte de internacionalización. Qt también proporciona Qt Quick, que incluye un lenguaje de secuencias de comandos declarativo llamado QML que permite usar JavaScript para proporcionar la lógica. Con Qt Quick, se hizo posible el desarrollo rápido de aplicaciones para dispositivos móviles, mientras que la lógica también se puede escribir con código nativo para lograr el mejor rendimiento posible.

Otras características incluyen acceso a base de datos SQL, análisis XML, análisis JSON, administración de subprocesos y soporte de red.

Lanzamientos de Qt

La última versión de Qt es 6.4.

También se siguen admitiendo, para usuarios comerciales, 5.15 LTS, lanzado el 26 de mayo de 2020, y 6.2 LTS, lanzado el 30 de septiembre de 2021. Las versiones de soporte a largo plazo (LTS) generalmente tienen soporte durante tres años, con una licencia comercial., mientras que el soporte de 5.15 se amplió a cinco años, por lo que es compatible durante más tiempo o hasta el 26 de mayo de 2025. Además, el proyecto KDE proporciona soporte no oficial para, al menos, Qt 5.15, es decir, no solo para usuarios comerciales.

Qt en uso

En 2017, Qt Company estimó una comunidad de alrededor de 1 millón de desarrolladores en todo el mundo en más de 70 industrias.

IU de escritorio

La mascota de KDE Konqi mostrando su Corazón Qt

Interfaces gráficas de usuario y entornos de escritorio que utilizan Qt/QML como conjunto de herramientas de widgets:

IU integradas y móviles

Aplicaciones que usan Qt

Muchos software multiplataforma patentados o de código abierto notables utilizan Qt o QML:

  • 010 Editor, editor comercial de hex y editor de texto para Microsoft Windows, Linux y macOS.
  • Ableton Live
  • Adobe Photoshop Album
  • Elementos de Adobe Photoshop
  • Aplicación de herramientas de controlador de AMD Radeon Software Crimson Edition.
  • Audacious, un reproductor de música para Linux, Microsoft Windows y otros sistemas operativos similares a Unix.
  • Autodesk Maya
  • Autodesk 3ds Max
  • Bitcoin Core, la aplicación de bitcoin de referencia. La mayoría de las horquillas de bitcoin también proporcionan la referencia GUI.
  • Aplicación de colección Calibre, ebook
  • Celestia, simulador 3D en tiempo real de todo el universo conocido (Qt sólo disponible con v1.7.0)
  • CryEngine V editor
  • DaVinci Resolve, un editor de vídeo
  • Delfín (emulador), un emulador para los Wii y GameCube
  • Software de notación Dorico
  • Dragonframe stop motion software de animación
  • EAGLE by CadSoft Computer / Autodesk, una aplicación EDA con captura esquemática, diseño PCB, auto-router y características CAM
  • FreeMat libre código abierto ambiente de computación numérico
  • Ámbito de desarrollo integrado BASIC de código abierto libre
  • Google Earth
  • Igor Pro, un software de análisis de datos
  • Diseño gráfico Krita y software de pintura digital
  • LMMS, un software de producción de música multiplataforma
  • Mathematica, un programa matemático de computación simbólica, a veces llamado un sistema de álgebra de computadora o programa, utilizado en muchos campos científicos, de ingeniería, matemática y computación.
  • Monero, una criptomoneda centrada en la privacidad, implementa su software oficial de cartera de escritorio usando Qt.
  • MuseScore, un software de notación multiplataforma de código abierto
  • OBS, un software libre de pantalla multiplataforma
  • Suite de extracción de datos naranja
  • Para Ver aplicación multiplataforma de código abierto para la visualización interactiva y científica
  • qBittorrent cross-platform free and opensource BitTorrent client
  • Sistema de información geográfica
  • Qtractor Audio multitrack recorder y software de edición
  • QuiteRSS Feed Reader
  • Plataforma de comunicación F2F
  • Roblox Studio una herramienta de creación de juego utilizada en la plataforma Roblox
  • Software de publicación de escritorio Scribus
  • Sibelius composición de música y software de notación
  • Fuente 2 herramientas de motor un motor de videojuego 3D desarrollado por Valve
  • Stellarium, un programa planetario
  • Subsuperficie, un software para registrar y planificar buceos diseñado y desarrollado inicialmente por Linus Torvalds
  • SuperCollider, un ambiente y lenguaje de programación para la síntesis de audio en tiempo real y composición algorítmica
  • Teamviewer, un paquete de software informático para control remoto, compartir escritorio, reuniones en línea, conferencias web y transferencia de archivos entre ordenadores
  • Telegram, un cliente de mensajería disponible para Windows, Mac y Linux
  • VirtualBox OS software de virtualización
  • VLC media player
  • Wireshark, un analizador de paquetes
  • WPS Office
  • XaoS, un zoomor fractal en tiempo real
  • XnView MP

Organizaciones que usan Qt

Qt es utilizado por una amplia gama de empresas y organizaciones como

  • AMD
  • Blizzard Entertainment
  • BMW
  • Crytek
  • Daimler AG
  • Electronic Arts
  • European Space Agency
  • DreamWorks
  • LG
  • Lucasfilm
  • Microsoft
  • Panasonic
  • Philips
  • Robert Bosch GmbH
  • Samsung
  • Siemens
  • Tesla
  • Tomtom
  • Volvo
  • German Air Traffic Control
  • HP
  • Walt Disney Animation Studios
  • Valvula
  • Nokta

Arquitectura de software Qt

Ejemplo de uso de Qt en sistemas basados en Linux

Conceptos Qt

Qt se basa en estos conceptos clave:

abstracción completa del GUI
Cuando se libera por primera vez, Qt utilizó su propio motor de pintura y controles, emulando el aspecto de las diferentes plataformas en las que funciona cuando dibujó sus widgets. Esto hizo que el trabajo de porte fuera más fácil porque muy pocas clases en Qt dependían realmente de la plataforma de destino; sin embargo, esto ocasionalmente condujo a pequeñas discrepancias donde esa emulación era imperfecta. Las versiones recientes de Qt usan las API de estilo nativo de las diferentes plataformas, en plataformas que tienen un widget nativo, para consultar métricas y dibujar la mayoría de controles, y no sufren de problemas tales como a menudo. En algunas plataformas (como MeeGo y KDE) Qt es la API nativa. Algunos otros toolkits gráficos portátiles han tomado diferentes decisiones de diseño; por ejemplo, wxWidgets utiliza los kits de herramientas de la plataforma de destino para sus implementaciones.
Señales y ranuras
Un constructo de lenguaje introducido en Qt para la comunicación entre objetos que hace fácil implementar el patrón de observador evitando el código de calderas. El concepto es que los widgets GUI pueden enviar señales que contienen información de eventos que pueden ser recibidas por otros controles utilizando funciones especiales conocidas como ranuras.
Metaobject compilador
El compilador metaobjeto, llamado moc, es una herramienta que se ejecuta en las fuentes de un programa Qt. Interpreta ciertas macros del código C++ como anotaciones, y las utiliza para generar código añadido C++ con información meta sobre las clases utilizadas en el programa. Esta información meta es utilizada por Qt para proporcionar características de programación no disponibles nativamente en C++: señales y ranuras, introspección y llamadas de función asincrónicas.
Arreglos de idiomas
Qt se puede utilizar en varios lenguajes de programación distintos de C++, como Python, Javascript, C# y Rust a través de enlaces de idiomas; muchos idiomas tienen enlaces para Qt 5 y enlaces para Qt 4.

Módulos Qt

A partir de Qt 4.0, el marco se dividió en módulos individuales. Con Qt 5.0, la arquitectura se modularizó aún más. Qt ahora se divide en módulos essential y add-on.

Lo esencial de Qt

Módulo Descripción
Qt CoreEl único requisito Módulo Qt, que contiene clases utilizadas por otros módulos, incluyendo el sistema meta-objeto, concurrencia e rosca, contenedores, sistema de eventos, plugins e instalaciones I/O.
Qt GUIEl módulo central GUI. En Qt 5 este módulo ahora depende de OpenGL, pero ya no contiene ninguna clase de widget.
Qt WidgetsContiene clases para aplicaciones clásicas basadas en widget GUI y las clases QSceneGraph. Fue separado de QtGui en Qt 5.
Qt QMLMódulo para lenguajes QML y JavaScript.
Qt QuickEl módulo de aplicación GUI escrito con QML2.
Controles rápidos QtWidget como controles para Qt Quick destinados principalmente a aplicaciones de escritorio.
Qt Quick LayoutsDiseños para organizar objetos en Qt Quick.
Qt NetworkCapa de abstracción de red. Complete with support for TCP, UDP, HTTP, TLS, SSL (in Qt 4) and SPDY (since Qt 5.3).
Qt MultimediaClases para funciones de audio, vídeo, radio y cámara.
Qt Multimedia WidgetsLos widgets de Qt Multimedia.
Qt SQLContiene clases para la integración de bases de datos usando SQL.
Qt WebEngineUn nuevo conjunto de API Qt Widget y QML Webview basado en Chromium.
Qt TestClases para pruebas de unidad Aplicaciones Qt y bibliotecas.

Complementos Qt

Módulo Descripción
Qt activoClases para aplicaciones que utilizan ActiveX.
Qt ChartsProporciona funcionalidad y widgets para trazar gráficos de muchos tipos
Qt BluetoothClases que acceden al hardware Bluetooth.
Qt D-BusClases para PCI utilizando el protocolo D-Bus.
Qt NFCClases que acceden al hardware NFC. Sólo se apoyó oficialmente en hardware BlackBerry hasta ahora (o N9 en el puerto de MeeGo).
Qt OpenGLMódulo Legacy que contiene las clases OpenGL de Qt 4. En Qt 5 la funcionalidad similar en Qt GUI se recomienda.
Qt LocationClases para acceder a los servicios de GPS y otros servicios de localización y para la asignación y navegación. Sepárese del módulo de movilidad Qt 4 Qt Location. Admitido en Android, BlackBerry, iOS, Linux (utilizando GeoClue), Windows y Sailfish OS.
Qt Quick 3DClases para renderizar modelos 3D, videojuegos, simulaciones e interfaces de usuario 3D, con un Qt QML API, en un gráfico mixto de escena 2D y 3D.
Qt ScriptMódulo Legacy para scripting Aplicación Qt usando ECMAScript/JavaScript. En Qt 5, usando clases similares en Qt QML se recomienda.
Sensores de QtClases para acceder a varios sensores de hardware móvil. Solía ser parte de Qt Mobile en Qt 4. Admitido en Android, BlackBerry, iOS, WinRT, Mer y Linux.
Qt Puerto de serieClases para el acceso al hardware y puertos serie virtuales. Soportado en Windows, Linux y macOS.
Qt WebChannelProporciona acceso a objetos Qt a HTML/Js sobre WebSockets.
Qt WebKitAplicación WebKit de Qt y API.
Qt WebKit WidgetsEl widget API para Qt WebKit
Qt WebSocketsProporciona una implementación WebSocket.
Qt XMLMódulo Legacy que contiene clases para API XML de estilo SAX y DOM. Reemplazado por las clases de QXmlStreamReader y QXmlStreamWriter Qt Core.
Pautas XML de QtSoporte para validación de esquemas XPath, XQuery, XSLT y XML.

Ediciones

Hay cuatro ediciones de Qt disponibles: Community, Indie Mobile, Professional y Enterprise. La versión Community está bajo las licencias de código abierto, mientras que las versiones Indie Mobile, Professional y Enterprise, que contienen funcionalidades y bibliotecas adicionales, p. Enterprise Controls se vende comercialmente por The Qt Company.

Plataformas compatibles

Qt funciona en muchas plataformas diferentes; los siguientes son compatibles oficialmente:

PlataformaDescripción
Linux/Unix
X11 Qt for X Window System (Linux); FreeBSD, NetBSD, OpenBSD y Dragon Fly BSD tiene apoyo comunitario.
WaylandLas aplicaciones Qt pueden cambiar entre backends gráficos como X y Wayland en tiempo de carga con la opción de línea de comandos -platform. Esto permite una transición perfecta de aplicaciones Qt de X11 a Wayland. SailfishOS utiliza Wayland sólo ya que no tiene X11.
AndroidQt para Android (anteriormente conocido como Necessitas).
Linux incrustadoQt para plataformas incrustadas: asistente digital personal, teléfono inteligente, etc. Existe como plataformas múltiples dependiendo de la tecnología de visualización. DirectFB, LinuxFB y EGLFS (EpL Full Screen).
Plataformas de Microsoft
WindowsQt para Microsoft Windows 7, 8 y 10
Windows RTSoporte para aplicaciones móviles Windows 10 basadas en WinRT y Windows 10 IoT
Plataformas de Apple
macOSQt for Apple macOS; admite aplicaciones en Cocoa
iOSQt para plataformas iOS (iPhone, iPad)
Otras plataformas incrustadas
IntegridadQt for Integrity
QNXQt para QNX
VxWorksQt para VxWorks. Solo disponible bajo licencia de propiedad (comercial). Qt 5.5.

Después de que Nokia abrió el código fuente de Qt a la comunidad en Gitorious, aparecieron varios puertos. También hay algunos puertos de Qt que pueden estar disponibles, pero ya no son compatibles. Estas plataformas se enumeran en la Lista de plataformas admitidas por Qt. Consulte también allí el soporte actual de la comunidad para otras plataformas menos conocidas, como SailfishOS.

Licencias

Qt está disponible bajo las siguientes licencias de software gratuito: GPL 2.0, GPL 3.0, LGPL 3.0 y LGPL 2.1 (con la excepción especial de Qt). Tenga en cuenta que algunos módulos solo están disponibles bajo una licencia GPL, lo que significa que las aplicaciones que se vinculan a estos módulos deben cumplir con esa licencia.

Además, Qt siempre ha estado disponible bajo una licencia comercial, como la Licencia Comercial Qt, que permite desarrollar aplicaciones propietarias sin restricciones de licencia.

Herramientas Qt

Qt viene con su propio conjunto de herramientas para facilitar el desarrollo multiplataforma, que de otro modo puede ser engorroso debido a los diferentes conjuntos de herramientas de desarrollo.

Qt Creator es un IDE multiplataforma para C++ y QML. La funcionalidad de diseño/diseño de la GUI de Qt Designer está integrada en el IDE, aunque Qt Designer aún se puede iniciar como una herramienta independiente.

Además de Qt Creator, Qt proporciona qmake, una herramienta de generación de secuencias de comandos de compilación multiplataforma que automatiza la generación de Makefiles para proyectos de desarrollo en diferentes plataformas. Hay otras herramientas disponibles en Qt, incluido el generador de interfaz Qt Designer y el navegador de ayuda Qt Assistant (ambos integrados en Qt Creator), la herramienta de traducción Qt Linguist, uic (compilador de interfaz de usuario) y moc (compilador de metaobjetos).).

Historia de Qt

Primeros desarrollos

En el verano de 1990, Haavard Nord y Eirik Chambe-Eng (los desarrolladores originales de Qt y el director ejecutivo y presidente, respectivamente, de Trolltech) estaban trabajando juntos en una aplicación de base de datos para imágenes de ultrasonido escrita en C++ y ejecutada en Mac. SO, Unix y Microsoft Windows. Comenzaron el desarrollo de "Qt" en 1991, tres años antes de que la empresa se incorporara como Quasar Technologies, luego cambió el nombre a Troll Tech y luego a Trolltech.

El conjunto de herramientas se llamó Qt porque la letra Q se veía atractiva en el tipo de letra Emacs de Haavard, y "t" se inspiró en Xt, el kit de herramientas X.

Las dos primeras versiones de Qt tenían solo dos sabores: Qt/X11 para Unix y Qt/Windows para Windows.

El 20 de mayo de 1995, Troll Tech lanzó públicamente Qt 0.90 para X11/Linux con el código fuente bajo la Licencia Qt Free Edition. La Free Software Foundation consideró que esta licencia no cumplía con la definición de software libre porque, si bien la fuente estaba disponible, no permitía la redistribución de versiones modificadas. Trolltech usó esta licencia hasta la versión 1.45. La controversia estalló alrededor de 1998 cuando quedó claro que K Desktop Environment se convertiría en uno de los principales entornos de escritorio para Linux. Como estaba basado en Qt, a muchas personas en el movimiento del software libre les preocupaba que una pieza esencial de uno de sus principales sistemas operativos fuera propietaria.

La plataforma Windows solo estaba disponible bajo una licencia propietaria, lo que significaba que las aplicaciones gratuitas o de código abierto escritas en Qt para X11 no podían migrarse a Windows sin comprar la edición propietaria.

Hacerse compatible con el software libre

Con el lanzamiento de la versión 2.0 del kit de herramientas a mediados de 1999, la licencia se cambió a Q Public License (QPL), una licencia de software libre, pero que la Free Software Foundation considera incompatible con la GPL. Se buscaron compromisos entre KDE y Trolltech por los cuales Qt no podría caer bajo una licencia más restrictiva que la QPL, incluso si Trolltech fuera comprado o quebrara. Esto condujo a la creación de la fundación KDE Free Qt, que garantiza que Qt caería bajo una licencia de estilo BSD en caso de que no se lanzara una versión libre/de código abierto de Qt durante 12 meses.

En 2000, se lanzó Qt/X11 2.2 bajo la licencia GPL v2, lo que puso fin a toda controversia sobre la compatibilidad con la licencia GPL.

A fines de 2001, Trolltech lanzó Qt 3.0, que agregó soporte para Mac OS X (ahora conocido como macOS). El soporte para Mac OS X estuvo disponible solo en la licencia propietaria hasta junio de 2003, cuando Trolltech lanzó Qt 3.2 con soporte para Mac OS X disponible bajo la GPL.

En 2002, los miembros del proyecto KDE en Cygwin comenzaron a migrar el código base Qt/X11 con licencia GPL a Windows. Esto fue en respuesta a la negativa de Trolltech a licenciar Qt/Windows bajo la GPL con el argumento de que Windows no era una plataforma de software libre/de código abierto. El proyecto logró un éxito razonable aunque nunca alcanzó la calidad de producción.

Esto se resolvió cuando Trolltech lanzó Qt 4.0 también para Windows bajo la GPL en junio de 2005. Qt 4 admitía el mismo conjunto de plataformas en las ediciones de software libre/código abierto que en la edición propietaria, por lo que es posible, con Qt 4.0 y versiones posteriores, para crear aplicaciones gratuitas/de código abierto con licencia GPL utilizando Qt en todas las plataformas compatibles. La GPL v3 con una excepción especial se agregó más tarde como una opción de licencia adicional. La excepción de GPL permite que la aplicación final se licencie bajo varias licencias de software libre/código abierto incompatibles con GPL, como la Licencia pública de Mozilla 1.1.

Adquisición por Nokia

Nokia adquirió Trolltech ASA el 17 de junio de 2008 y cambió el nombre primero a Qt Software y luego a Qt Development Frameworks.

Nokia se centró en convertir Qt en la principal plataforma de desarrollo para sus dispositivos, incluido un puerto para la plataforma Symbian S60. La versión 1.0 de Nokia Qt SDK se lanzó el 23 de junio de 2010. El código fuente estuvo disponible en Gitorious, un repositorio de código fuente de git orientado a la comunidad, con el objetivo de crear una comunidad más amplia que use y mejore Qt.

El 14 de enero de 2009, la versión 4.5 de Qt agregó otra opción, la LGPL, para hacer que Qt sea más atractivo tanto para proyectos de código abierto sin GPL como para aplicaciones cerradas.

En febrero de 2011, Nokia anunció su decisión de abandonar las tecnologías Symbian y basar sus futuros teléfonos inteligentes en la plataforma Windows Phone (y desde entonces también se eliminó la compatibilidad con esa plataforma). Un mes después, Nokia anunció la venta de licencias comerciales y servicios profesionales de Qt a Digia, con el objetivo inmediato de llevar el soporte de Qt a las plataformas Android, iOS y Windows 8, y continuar enfocándose en el desarrollo integrado y de escritorio, aunque Nokia seguiría siendo la principal fuerza de desarrollo detrás del marco en ese momento.

Fusión y separación con Digia

En marzo de 2011, Nokia vendió la parte de licencias comerciales de Qt a Digia, creando Qt Commercial. En agosto de 2012, Digia anunció que adquiriría Qt de Nokia. El equipo de Qt en Digia comenzó su trabajo en septiembre de 2012. Lanzaron Qt 5.0 en un mes y versiones más nuevas cada seis meses con nuevas funciones y plataformas compatibles adicionales.

En septiembre de 2014, Digia transfirió el negocio y los derechos de autor de Qt a su subsidiaria de propiedad absoluta, The Qt Company, que posee 25 marcas relacionadas con Qt. En mayo de 2016, Digia y Qt se fusionaron por completo en dos empresas independientes.

El Proyecto Qt y la gobernanza abierta

Qt 5 se lanzó oficialmente el 19 de diciembre de 2012. Esta nueva versión marcó un cambio importante en la plataforma, con gráficos acelerados por hardware, QML y JavaScript jugando un papel importante. Los QWidgets tradicionales de solo C++ continuaron siendo compatibles, pero no se beneficiaron de las mejoras de rendimiento disponibles a través de la nueva arquitectura. Qt 5 trae mejoras significativas en la velocidad y facilidad de desarrollo de interfaces de usuario.

El desarrollo del marco de trabajo de Qt 5 pasó a la gobernanza abierta en qt-project.org, lo que hizo posible que los desarrolladores externos a Digia enviaran parches para su revisión.

Contribuidores de Qt

Distribución de la no Digia contribuyentes de Qt (2013, semana 18)

Además de The Qt Company, muchas organizaciones e individuos que usan Qt como su plataforma de desarrollo participan en el desarrollo abierto de Qt a través del Proyecto Qt.

Uno de estos colaboradores de Qt es Klarälvdalens Datakonsult AB, una empresa sueca de consultoría de Qt. KDAB participa en muchas áreas, incluido el mantenimiento de varios componentes.

Junto con RIM/BlackBerry, KDAB mantiene los puertos QNX y BlackBerry 10 de Qt.

Otro participante es Intel, que contribuye, por ejemplo, con el soporte de Wayland. AudioCodes mantiene la compatibilidad con IBM ClearCase en Qt Creator.

Como gran usuario de Qt, el proyecto KDE envía muchos parches y características de su biblioteca de desarrolladores KDE Frameworks a Qt.