En esta página

Qt GUI Visión general

El módulo Qt GUI proporciona clases para la integración del sistema de ventanas, manejo de eventos, integración de OpenGL y OpenGL ES, gráficos 2D, imágenes básicas, fuentes y texto. Estas clases son usadas internamente por las tecnologías de interfaz de usuario de Qt pero también pueden ser usadas directamente, por ejemplo para escribir aplicaciones usando APIs gráficas OpenGL ES de bajo nivel.

Para los desarrolladores de aplicaciones que escriben interfaces de usuario, Qt proporciona APIs de más alto nivel, como Qt Quick, que son mucho más adecuadas que los habilitadores que se encuentran en el módulo Qt GUI.

Ventanas de aplicación

Las clases más importantes del módulo Qt GUI son QGuiApplication y QWindow. Una aplicación Qt que quiera mostrar contenido en pantalla tiene que usarlas. QGuiApplication contiene el bucle principal de eventos, donde todos los eventos del sistema de ventanas y otras fuentes son procesados y enviados. También maneja la inicialización y finalización de la aplicación.

La clase QWindow representa una ventana en el sistema de ventanas subyacente. Proporciona una serie de funciones virtuales para manejar los eventos (QEvent) del sistema de ventanas, como la entrada táctil, la exposición, el enfoque, las pulsaciones de teclas y los cambios de geometría.

Gráficos 2D

El módulo Qt GUI contiene clases para gráficos 2D, imágenes, fuentes y tipografía avanzada.

Un QWindow creado con el tipo de superficie QSurface::RasterSurface puede utilizarse en combinación con QBackingStore y QPainter, la API de gráficos vectoriales 2D altamente optimizada de Qt. QPainter admite el dibujo de líneas, polígonos, trazados vectoriales, imágenes y texto. Para más información, véase Sistema de pintura y ejemplo de ventana rasterizada.

Qt puede cargar y guardar imágenes utilizando las clases QImage y QPixmap. Por defecto, Qt soporta los formatos de imagen más comunes incluyendo JPEG y PNG entre otros. Los usuarios pueden añadir soporte para formatos adicionales a través de la clase QImageIOPlugin. Para obtener más información, consulte Lectura y escritura de archivos de imagen.

La tipografía en Qt se realiza con QTextDocument, que utiliza la API QPainter en combinación con las clases de fuentes de Qt, principalmente QFont. Las aplicaciones que prefieren APIs de más bajo nivel para el manejo de texto y fuentes pueden usar clases como QRawFont y QGlyphRun.

Gráficos RHI

Qt Rendering Hardware Interface es una abstracción para APIs de gráficos acelerados por hardware, como OpenGL, OpenGL ES, Direct3D, Metal y Vulkan.

Como alternativa al uso directo de OpenGL o Vulkan para renderizar en QWindow, QRhi y las clases relacionadas proporcionan una API de computación y gráficos 3D portátil y multiplataforma complementada por un pipeline de acondicionamiento y transpilación de shaders. De este modo, las aplicaciones pueden evitar depender directamente de una API 3D única y, en algunos casos, específica de un proveedor o plataforma.

A continuación figura una lista de las principales clases relacionadas con RHI. Éstas se complementan con una serie de clases y estructuras adicionales.

Consulte el ejemplo de ventana RHI para ver un ejemplo introductorio de creación de una aplicación portátil y multiplataforma que realiza un renderizado 3D acelerado en QWindow utilizando QRhi.

Trabajar directamente con QWindow es la forma más avanzada y a menudo la más flexible de renderizar con la API QRhi. Sin embargo, es el enfoque de más bajo nivel, y limitado en el sentido de que las tecnologías de interfaz de usuario de Qt, widgets y Qt Quick, no se utilizan en absoluto. En muchos casos, las aplicaciones querrán integrar el renderizado basado en QRhi en una interfaz de usuario basada en widgets o en Qt Quick. QWidget Las aplicaciones basadas en widgets pueden optar por incrustar la ventana como un hijo nativo en la jerarquía de widgets a través de QWidget::createWindowContainer(), pero en muchos casos QRhiWidget ofrecerá un habilitador más conveniente para integrar la renderización basada en QRhi en una interfaz de usuario basada en widgets. Qt Quick proporciona su propio conjunto de habilitadores para ampliar la escena 2D/3D con renderización personalizada basada en QRhi.

Nota: La familia de APIs RHI se ofrece actualmente con una garantía de compatibilidad limitada, a diferencia de las APIs públicas de Qt. Consulte QRhi para obtener más información.

Matrices 3D y Matemáticas Vectoriales

El módulo Qt GUI también contiene algunas clases matemáticas para ayudar con las operaciones matemáticas más comunes relacionadas con los gráficos 3D. Estas clases incluyen QMatrix4x4, QVector2D, QVector3D, QVector4D, y QQuaternion.

Integración de OpenGL y OpenGL ES

QWindow soporta renderizado usando OpenGL y OpenGL ES, dependiendo de lo que soporte la plataforma. La renderización OpenGL se habilita estableciendo el tipo de superficie de QWindow en QSurface::OpenGLSurface, eligiendo los atributos de formato con QSurfaceFormat, y luego creando un QOpenGLContext para gestionar el contexto OpenGL nativo. Además, Qt tiene QOpenGLPaintDevice, que permite el uso de renderizado acelerado OpenGL QPainter, así como clases de conveniencia que simplifican la escritura de código OpenGL y oculta las complejidades del manejo de extensiones y las diferencias entre OpenGL ES 2 y OpenGL de escritorio. Las clases de conveniencia incluyen QOpenGLFunctions que permite a una aplicación utilizar todas las funciones OpenGL ES 2 en OpenGL de escritorio sin tener que resolver manualmente los punteros de función OpenGL. Esto permite el desarrollo multiplataforma de aplicaciones dirigidas a dispositivos móviles o embebidos, y proporciona clases que envuelven la funcionalidad OpenGL nativa en una API Qt más simple:

Por último, para proporcionar un mejor soporte para las versiones más recientes (3.0 y superiores) de OpenGL, también está disponible un mecanismo de envoltura de función versionada: La familia de clases QOpenGLFunction_N_N expone todas las funciones en una versión y perfil OpenGL dados, permitiendo un fácil desarrollo de aplicaciones de escritorio que dependen de características OpenGL modernas y exclusivas de escritorio.

Para más información, consulte el ejemplo de ventana OpenGL.

Un QWindow creado con el QSurface::OpenGLSurface puede ser utilizado en combinación con QPainter y QOpenGLPaintDevice para tener gráficos 2D acelerados por hardware OpenGL sacrificando parte de la calidad visual.

Integración con Vulkan

Qt GUI tiene soporte para la API Vulkan. Las aplicaciones Qt requieren la presencia del SDK LunarG Vulkan.

En Windows, el SDK establece la variable de entorno VULKAN_SDK, que será detectada por el script configure.

En Android, las cabeceras Vulkan se añadieron en el nivel 24 de la API del NDK.

Las principales clases relevantes para el soporte de Vulkan a bajo nivel son:

Además, QVulkanWindow proporciona una subclase de conveniencia de QWindow que hace más fácil empezar a implementar el renderizado basado en Vulkan apuntando a un QWindow. Usar esta clase de ayuda es completamente opcional; las aplicaciones con renderizadores más avanzados basados en Vulkan pueden en su lugar querer usar un QWindow con el tipo QSurface::VulkanSurface directamente.

Para más información, consulta el Ejemplo de Widget Hola Vulkan y el Ejemplo de Triángulo Hola Vulkan.

Arrastrar y soltar

Qt GUI incluye soporte para arrastrar y soltar. La descripción general de Arrastrar y soltar tiene más información.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.