Novedades de Qt 6.9
Nuevas funciones de Qt 6.9
Qt Core El módulo
- QString::arg() ahora tiene soporte para argumentos UTF-8 (QUtf8StringView) y QAnyStringView. Pasar literales de cadena C o QByteArrays a arg() ahora ya no convierte implícitamente a QString primero.
- QAnyStringView y QUtf8StringView tienen ahora un (multi)arg(), como ya tenían QStringView y QLatin1StringView. Estos también soportan argumentos QUtf8StringView y QAnyStringView, como la versión QString.
- QJniArray ahora puede crear un array vacío de tamaño fijo, y cambiar valores en un array usando un iterador no-const o operator[]
- QLocale::uiLanguages() incluye ahora entradas fall-back obtenidas eliminando componentes posteriores de nombres. Ahora se anima a los usuarios que han estado haciendo estos truncamientos por sí mismos a confiar en que QLocale sabe qué cosas hay que intentar y en qué orden hacerlo.
- QLocale::bcp47Name() ahora representa la configuración regional de C como "en-POSIX", para distinguirla de "en" y alinearla mejor con la especificación BCP47. La variante POSIX también se reconoce ahora como la configuración regional de C, cuando se construye una a partir de su nombre.
- QTimeZone::abbreviation() en Windows devuelve ahora una abreviatura en lugar del nombre completo.
- QTimeZone::displayName() ahora debería proporcionar nombres apropiados para la configuración regional de las zonas en todas las plataformas, mientras que antes algunas no lo hacían.
- La conversión de cadenas de fecha y hora con una parte de zona horaria a QDateTime reconoce ahora los nombres largos de zonas.
- QMetaEnum y QFlags pueden ahora soportar tipos que requieran hasta 64-bits.
- QJsonValue puede ahora analizar y serializar JSON utilizando fromJson y toJson directamente, sin pasar por QJsonDocument. Esto le permite analizar y serializar valores primitivos como cadenas o números, así como valores compuestos.
- QThread ha adquirido la capacidad de establecer el nivel de calidad de servicio del hilo del sistema operativo mediante la nueva función setServiceLevel.
- QThreadPool también puede establecer el nivel de calidad de servicio para sus hilos utilizando setServiceLevel.
- QFile::supportsMoveToTrash() informa si QFile::moveToTrash() está implementado en el sistema operativo actual.
- QIODevice::readLineInto() permite leer una línea de datos en un búfer preasignado.
- Utilice la nueva macro Q_STATIC_LOGGING_CATEGORY para declarar una categoría de registro que sólo se utiliza en una única unidad de traducción.
- Llame al nuevo método QSortFilterProxyModel::beginFilterChange() para asegurarse de que los cambios del contenido filtrado se reconocen correctamente.
- QTimerEvent::matches() facilita la comprobación de si un evento de temporizador pertenece a un QBasicTimer específico.
- QUuid::createUuidV7() permite crear identificadores únicos basados en RFC9562.
- QCommandLineParser::showMessageAndExit() proporciona una forma cómoda de mostrar un mensaje informativo o de error al usuario antes de salir de la aplicación.
- QHash consiguió que las APIs tryEmplace y insertOrAssign coincidieran con las respectivas APIs de la biblioteca estándar.
- QSpan ahora puede chop y slice espacios de tamaño variable.
Qt Graphs Módulo
- Añadido soporte de transparencia a Surface3D, utilizando la transparencia independiente del orden de QtQuick3D. Hasta ahora sólo se ha implementado una técnica aproximada (WeightedBlended) en QtQuick3D, por lo que aún no se pueden utilizar técnicas precisas.
- Añadido rootNode para permitir inyectar gráficos a un View3D en aplicaciones QtQuick3D.
- Añadido otro método de picking, doRayPicking, para ser usado con inyecciones de gráficos en View3D.
- Añadida la clase QSpline3DSeries para permitir a los usuarios representar sus datos en splines.
- Añadida la propiedad valueColoringEnabled a Bars3D, que permite colorear cada barra por separado en función de su valor.
- Añadida la propiedad scaleLabelsByCount a QAbstract3DAxis, que permite a los usuarios definir si las etiquetas de los ejes deben ser escaladas en base a la cantidad total de etiquetas.
- Añadida la propiedad labelSize a QAbstract3DAxis, que permite a los usuarios definir los tamaños de las etiquetas de los ejes por cada eje.
- Se ha añadido soporte para establecer las rotaciones mínima y máxima en las direcciones X e Y a Bars3D, Scatter3D, y Surface3D.
- Añadida la propiedad alignment a QAbstractAxis, permitiendo a los usuarios alinear los ejes a la izquierda, derecha, arriba o abajo.
- Añadida la propiedad plotArea a QGraphsView, permitiendo a los usuarios definir el rectángulo en el que se dibujará un gráfico.
- Añadido soporte de zoom y panning a QGraphsView.
- Añadido el manejo de entradas personalizadas para gráficos de área, línea, tarta y dispersión.
Qt GRPC Módulo
- Añadido el ejemplo general de Qt GRPC Client Guide.
- Mejorada y refinada toda la documentación y ejemplos.
- Optimización de las RPCs de streaming para escritura bajo alta carga.
Qt GUI Módulo
- QBrush y QPen tienen operadores optimizados para comparar o asignar valores de color y estilo.
- QPainter::setBrush() tiene nuevas sobrecargas optimizadas para establecer un color como pincel sólido.
- QPainterStateGuard es una nueva clase RAII para asegurar operaciones equilibradas de guardar/restaurar en QPainter.
- QColorSpace tiene APIs para establecer y obtener los cuatro puntos del espacio de color primario.
- Se ha añadido Qt::ExpandedClientAreaHint para solicitar que el área de cliente de la ventana se amplíe a las zonas en las que podría quedar oculta o entrar en conflicto con otros elementos de la interfaz de usuario, como los controles de la barra de título de la ventana u otras interfaces de usuario del sistema.
- Se ha añadido Qt::NoTitleBarBackgroundHint para solicitar que la barra de título de la ventana se dibuje sin color de fondo.
- Se ha añadido QWindow::safeAreaMargins() para reflejar el área segura de la ventana.
- Se ha añadido el análisis sintáctico y la detección automática de secuencias emoji en el texto, garantizando el uso de fuentes de color cuando sea necesario de acuerdo con la especificación Unicode. Este analizador sintáctico puede desactivarse por diseño mediante QTextOption::DisableEmojiParsing, o desactivando el segmentador emoji al configurar Qt.
- Añadido QFontDatabase::addApplicationEmojiFontFamily() y funciones relacionadas para personalizar la fuente emoji por defecto utilizada por la aplicación.
- Añadido QFontInfo::variableAxes() para recuperar información sobre los ejes variables soportados por una fuente.
- QImage::flipped() y QImage::flip() proporcionan una API basada en Qt::Orientation para voltear una imagen, haciendo que el código sea más fácil de leer que la alternativa basada en bool QImage::mirrored().
- QRhiCuando se ejecuta con OpenGL ES en GPUs móviles que lo soportan, se utiliza GL_EXT_multisampled_render_to_texture siempre que sea posible. En el caso de clientes como Qt Quick y Qt Quick 3D, esto puede aportar importantes mejoras de rendimiento en el renderizado multimuestreo en arquitecturas de GPU en mosaico.
- QRhi: En Windows con Direct 3D 11 y 12, las solicitudes de actualización de QWindow se realizan ahora a través de un subproceso de vigilancia vblank dedicado, lo que reduce la carga de la CPU y la latencia. Esto significa que se espera que clientes como Qt Quick tengan un retardo reducido al arrastrar elementos de forma interactiva mediante el ratón o el tacto, por ejemplo.
- QRhi: Se ha añadido compatibilidad con sombreado de tasa variable, en su caso (Direct 3D 12, Vulkan, Metal). Esto permite el soporte de foveation dinámico con Qt Quick 3D XR en visionOS.
- QRhi: La mezcla de objetivos por renderizado ahora también es compatible con OpenGL de forma opcional.
- QRhi: Se ha añadido compatibilidad con varios formatos de texturas enteras y de profundidad.
- QRhi: Se ha añadido soporte para pasar semáforos de espera/señal proporcionados por la aplicación en Vulkan. Estos son luego pasados a vkQueueSubmit y Present, permitiendo así la integración de motores de renderizado/computación externos que dependen de múltiples hilos y requieren una sincronización apropiada con el renderizador del scenegraph.
- Utilice la propiedad QPdfWriter::author() para establecer el autor del documento PDF generado.
Módulo Qt HttpServer
- QHttpServer puede configurarse ahora a través de QHttpServerConfiguration y la propiedad configuration. Actualmente, esto soporta la configuración de rateLimitPerSecond.
Qt Multimedia Módulo
- Añadidas las propiedades VideoOutput::endOfStreamPolicy y Video::endOfStreamPolicy, que permiten a las aplicaciones mantener el último fotograma en la salida cuando finaliza el flujo de vídeo.
- Se han añadido las propiedades VideoOutput::mirrored y Video::mirrored, que permiten a las aplicaciones voltear el vídeo presentado alrededor del eje Y.
Qt Network Módulo
- Se ha añadido setMaxConcurrentStreams, que controla el ajuste SETTINGS_MAX_CONCURRENT_STREAMS HTTP/2.
Qt Network Módulo Auth
- Se ha añadido QOAuth2DeviceAuthorizationFlow, que implementa la concesión de autorización de dispositivos tal y como se especifica en RFC 8628.
- Se ha añadido soporte práctico para la actualización de tokens. Véase QAbstractOAuth2::autoRefresh, QAbstractOAuth2::refreshLeadTime, y QAbstractOAuth2::accessTokenAboutToExpire().
- Facilita el uso de agentes de usuario distintos del navegador del sistema. Véase QOAuthUriSchemeReplyHandler::handleAuthorizationRedirect().
- Se han añadido las propiedades QAbstractOAuth2::requestedScopeTokens y QAbstractOAuth2::grantedScopeTokens para simplificar la distinción entre ámbitos solicitados y concedidos.
- Añadido soporte HTTPS a QOAuthHttpServerReplyHandler. Ver QOAuthHttpServerReplyHandler::listen(const QSslConfiguration&, const QHostAddress&, quint16).
- Añadido QOAuthHttpServerReplyHandler::setCallbackHost(), permitiendo la personalización de la parte hostname del URI de redirección.
- Añadido QAbstractOAuth2::setNetworkRequestModifier(), que permite modificar las peticiones de red antes de enviarlas.
- Mejorado el soporte para adquirir tokens de ID de OpenID Connect. Véase QAbstractOAuth2::idToken, QAbstractOAuth2::nonce, y QAbstractOAuth2::nonceMode.
- Se ha añadido la señal QAbstractOAuth2::serverReportedErrorOccurred(), que deja obsoleta la anterior señal QAbstractOAuth2::error(). El nuevo nombre de la señal indica claramente que estos errores corresponden específicamente a los casos definidos en RFC 6749, en lugar de errores generales.
Qt Protobuf Módulo
- Mejorada y refinada toda la documentación.
- Añadida la opción
HEADER_GUARDpara especificar el mecanismo utilizado para proteger los archivos de cabecera generados. - Añadida la opción
protobuf-unsafe-registrypara intercambiar seguridad por rendimiento en el acceso a serializadores protobuf personalizados.
Qt Qml Módulo
- QML Language Server proporciona ahora una vista de esquema de la estructura del documento. Esto permite a los clientes (por ejemplo, IDEs o editores de código) representar la estructura de un documento qml como un esquema interactivo, mostrando objetos, propiedades, métodos y otros elementos de código en una vista jerárquica.
- Se ha añadido la función de longitud máxima de línea a qmlformat: qmlformat controla ahora dónde romper las líneas en función de la longitud máxima de línea permitida, lo que garantiza un documento QML coherente y legible.
Qt Quick Módulo
- Añadida la propiedad adjunta SafeArea para gestionar las áreas seguras de un elemento o ventana.
- Se ha añadido el componente Shear para aplicar transformaciones de cizallamiento a los elementos.
- Se ha añadido la propiedad FontMetrics::capitalHeight, que antes no existía en la API Qt Quick.
- Se ha añadido el tipo FontInfo para recuperar los resultados de la resolución de fuentes, que coincide con la clase QFontInfo de C++.
- Reintroducido soporte para el modo de renderizado FramebufferObject de QQuickPaintedItem cuando la API gráfica en uso es OpenGL. Esto se proporciona como una ayuda de portabilidad para las aplicaciones de la era Qt 5 que requieren el uso del motor de pintura OpenGL heredado de QPainter para sus QQuickPaintedItems.
- Se ha optimizado la lógica de agrupación de búferes del renderizador de scenegraph para evitar picos de uso de memoria en escenas con grandes geometrías. Además, hay una reducción en la sobrecarga para escenas con muchos elementos, en particular cuando se ejecuta con OpenGL.
Qt Quick Controls Módulo
- Añadido ContextMenu. Puede adjuntarse a cualquier elemento para mostrar un menú contextual tras un evento específico de la plataforma, como un clic con el botón derecho o la tecla del menú contextual.
- TextField y TextArea proporcionan ahora un ContextMenu por defecto. Si ya dispone de un menú contextual personalizado para estos tipos, ContextMenu no abrirá el suyo propio (al hacer clic con el botón derecho o con la tecla del menú contextual).
Qt Quick Módulo de efectos
- Nuevo elemento RectangularShadow para sombra/brillo rápido en forma de rectángulo redondeado. La API es similar a la de CSS box-shadow, con valores de color, desplazamiento, dispersión y desenfoque.
Qt Quick Módulo 3D
- Se ha añadido la implementación de la transparencia independiente del orden de mezcla ponderada (OIT) para renderizar objetos transparentes.
- Se ha añadido compatibilidad con formatos de textura de enteros sin signo de 32 bits.
- Se ha mejorado el control de los límites de los mapas de sombras para los modelos instanciados, lo que puede mejorar el rendimiento cuando el cálculo resulte costoso.
- Se ha añadido compatibilidad con mapas de sombras 4K con un nuevo ajuste de resolución "Ultra".
- Se ha añadido la opción de forzar la precisión media para los valores flotantes en los sombreadores de fragmentos GLSL ES. Proporcionada principalmente como herramienta para ajustar el rendimiento. Establece la variable de entorno QT_QUICK3D_MEDIUM_PRECISION a un valor distinto de cero. No tiene efecto en otros tipos de shaders (y eso incluye también GLSL no-ES).
- DebugView Ahora soporta la visualización de límites para sombras de luz puntuales.
- Portado las geometrías incorporadas de Qt 3D a QtQuick3D.Helpers. PlaneGeometry Las geometrías SphereGeometry, CylinderGeometry, ConeGeometry, y TorusGeometry están ahora disponibles en QtQuick3D.Helpers.
- Añadido un port de ExtrudedTextMesh de Qt 3D a QtQuick3D.Helpers.
- Añadido soporte para usar instanciación con materiales personalizados en el editor de materiales.
Qt Quick Módulo 3D XR
- Añadido soporte para salida háptica con controladores usando amplitud, duración y frecuencia a través de un nuevo elemento XrHapticFeedback.
- Añadida nueva propiedad en XrInputAction para desactivar condicionalmente una acción sin tener que comprobarlo en todas las funciones del controlador.
- Añadido Metal backend para OpenXR para soportar la ejecución en Meta XR Simulator en macOS.
- La propiedad multiViewRenderingEnabled es ahora de sólo lectura y ya no es posible activar la renderización multivista en tiempo de ejecución. Si el renderizado multivista está soportado, estará habilitado durante toda la vida de la aplicación. En situaciones de portabilidad, donde no se desea el renderizado multivista, se puede desactivar estableciendo la variable de entorno QT_QUICK3D_XR_DISABLE_MULTIVIEW a un valor distinto de cero.
Qt Quick Módulo VectorImage
- Añadido soporte preliminar para animaciones de color y animaciones de transformación, igualando el soporte actual en Qt Svg.
Módulo Qt SQL
- QSqlDriver ganada una nueva función connectionName() que devuelve el nombre de conexión de la instancia QSqlDatabase asociada.
- QSqlQueryModel ahora puede refrescar la base de datos con refresh() cuando, por ejemplo, la base de datos fue modificada desde fuera de Qt por lo que necesita ser releída.
Qt SVG Módulo
- Añadidos tres nuevos valores a QtSvg::Options para desactivar animaciones.
- Soporta animación CSS para las propiedades fill, stroke y transform.
Módulo Qt VirtualKeyboard
- Añadido un nuevo diseño japonés que usa teclas flick.
- Añadido soporte para ajustar el volumen del sonido de las teclas.
Qt WebEngine Módulo
- Ha cambiado el renderizado interno para usar ANGLE, también cuando Qt usa OpenGL RHI. Mejorando el rendimiento y la similitud de errores con Chrome.
- QWebEngineProfileBuilder WebEngineProfilePrototype y se ha añadido QML Profiler para configurar perfiles antes de crearlos y evitar race conditions.
- QWebEngineLoadingInfo añadida una propiedad isDownload para indicar que la carga está relacionada con una descarga.
- QWebEngineUrlRequestInfo añadido también un método isDownload() para indicar que la solicitud está relacionada con una descarga.
- QWebEngineSettings y QML WebEngineSettings añadido tres nuevos ajustes. PrintHeaderAndFooter, y PreferCSSMarginsForPrinting para configurar la impresión. Y TouchEventsApiEnabled para desactivar TouchEvents API, que algunos sitios web utilizan como activador del modo móvil.
Qt Widgets Módulo
- QAbstractItemView tiene una nueva propiedad updateThreshold para especificar cuándo debe realizarse una actualización completa de la vista en lugar de intentar averiguar las partes en las que algo ha cambiado dentro de dataChanged(). Esto es especialmente útil cuando cambian muchos elementos en un modelo grande, ya que el cálculo del rectángulo de actualización puede tardar más que una actualización completa de la vista.
- QComboBox puede dibujar su etiqueta utilizando el delegado de la vista del elemento estableciendo la propiedad labelDrawingMode a UseDelegate.
- QHeaderView ha sido optimizado para reducir drásticamente el uso de memoria en modelos enormes, siempre que las secciones no se redimensionen, oculten o reordenen.
- El identificador establecido como QWidget::accessibleIdentifier puede ser utilizado por tecnologías de asistencia y por herramientas de pruebas automatizadas para identificar un widget específico.
- La ubicación en el dock de un QDockWidget no puede establecerse explícitamente utilizando la propiedad QDockWidget::dockLocation.
- QStackedWidget emite ahora la señal widgetAdded() cuando se añade un nuevo widget a la pila.
Qt XML Módulo
- QDomNodeList tiene un iterator API.
Herramientas
Generador de documentación QDoc
- QDoc ahora acepta comandos de formato en argumentos de macros.
- Los autores ahora pueden anular el tipo de retorno subyacente de una función documentada con un comando fn con
auto. - QDoc puede ahora generar documentación a partir de comentarios en las cabeceras de C++. Esto se añade como un avance tecnológico en QDoc con Qt 6.9, y nos encantaría recibir comentarios de nuestros usuarios. Habilita la variable de configuración documentationinheaders QDoc para probarlo.
- La documentación de enumeraciones QML puede generarse a partir de enumeraciones C++ con el nuevo comando qmlenumeratorsfrom.
- Los comandos generatelist y annotatedlist ahora admiten un orden de clasificación personalizado para las listas generadas.
- deprecated acepta versiones futuras, y QDoc genera el texto apropiado cuando reconoce una versión como futura.
- Requisitos de las bibliotecas Clang: QDoc requiere las bibliotecas Clang de LLVM 17. También se ha confirmado que funciona con bibliotecas Clang de LLVM 18, 19 y 20.
- QDoc ahora permite ajustar los requisitos de CMake para proyectos de terceros con los comandos cmakecomponent, cmakepackage y cmaketargetitem.
- Las advertencias relacionadas con ejemplos son ahora configurables a través de las nuevas variables de configuración examples.warnaboutmissingimages y examples.warnaboutmissingprojectfiles.
- QDoc puede ahora generar tooltips para las imágenes de la documentación. La documentación de la nueva variable de configuración usealttextastitle describe cómo habilitar esta opción para su proyecto.
Cambios en la plataforma
Cambios en el sistema de compilación
- Construir Qt y usar Qt en proyectos CMake ahora requiere CMake versión 3.22 o posterior.
Plataformas de escritorio
Windows
- Añadido nuevo público CMake API:
- Añadida la función qt_add_win_app_sdk CMake para añadir Windows App SDK al proyecto.
- Se ha añadido compatibilidad para renderizar formatos de fuente emoji adicionales, como CBDT y COLRv1.
Cliente Wayland en Linux
- Añadido soporte para el nuevo protocolo
xdg-toplevel-icon-v1para hacer que QWindow::setIcon() funcione si el compositor también soporta este protocolo. - El
wl_surfacesubyacente de una ventana ahora comparte su tiempo de vida y ya no se destruye cuando se oculta la ventana.
Plataformas móviles
Android
- Soporta librerías nativas sin comprimir dentro de APKs y elimina la necesidad de
packagingOptions.jniLibs.useLegacyPackaging true. - Introducir qt_add_android_permission() función CMake.
- Añadir QT_ANDROID_COMPILE_SDK_VERSION propiedad CMake para establecer el nivel de SDK para la construcción de código Java.
- Añadir propiedad CMake QT_ANDROID_APP_ICON para establecer el icono de una aplicación.
- Añadir propiedad CMake QT_ANDROID_APP_NAME para establecer el nombre de una aplicación.
- Desacoplar los permisos de localización y bluetooth para API de nivel 31+.
- Permitir el establecimiento de un máximo de eventos de interfaz de usuario de fondo en cola.
- Añadir script para desplegar fácilmente, ejecutar aplicaciones y obtener los registros de la terminal.
- Qt Quick para Android y QtQuickView:
- Añadir métodos setData() y dataChanged() a QtAbstractItemModel.
- Añadir interfaz de callback OnDataChangedListerner.
- QtQuickViewContent: Añadir sobrecarga onStatusChanged() que pasa el objeto QtQuickViewContent subyacente.
- Soporta múltiples vistas incrustadas desde un Servicio Android.
Plataformas integradas
Boot to Qt
- Se ha añadido soporte para Yocto 5.1 (Styhead).
- Los Niveles de Soporte para Hardware de Destino fueron actualizados con nuevas placas soportadas para el Nivel 1:
- NVIDIA Jetson AGX Orin Developer Kit (Boot to Qtactualizado desde el nivel 2).
- Los Niveles de Soporte para Hardware de Destino fueron actualizados con nuevas tarjetas soportadas para Nivel 2:
- Toradex Apalis iMX6 (Boot to Qt, rebajada de Tier 1).
- Los niveles de soporte para el hardware de destino se actualizaron con nuevas tarjetas compatibles para el nivel 3: Qualcomm RB3 Gen 2 Vision Kit (
- Qualcomm RB3 Gen 2 Vision Kit (Boot to Qt).
- NXP i.MX 8M Mini LPDDR4 EVK (Boot to Qtrebajado del nivel 2).
- NXP i.MX 8M Nano LPDDR4 EVK (Boot to Qt, rebajado de Tier 2).
- NXP i.MX 8M Plus LPDDR4 EVK (Boot to Qtde nivel 2).
- Las siguientes placas ya no son compatibles:
- Kit de desarrollo NVIDIA Jetson AGX Xavier (Boot to Qt).
- Amazon AWS EC2 ARM64 (Boot to Qt).
- TI SK-AM69 (Boot to Qt).
- NXP i.MX 8MQuad EVK (Boot to Qt).
- NXP i.MX 8QuadXPlus MEK (Boot to Qt).
- Kit de desarrollo RB5 de Qualcomm Robotics (Boot to Qt).
Sistemas operativos RealTime
- Los sistemas operativos RealTime sólo son compatibles con las versiones LTS. Para las versiones que no son LTS, el soporte está disponible exclusivamente a través de los Servicios Profesionales.
Lista de cambios en la API
Estas páginas contienen un resumen de los cambios en la API de Qt 6.9:
© 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.