Релиз фреймворка Qt 6.9

Компания Qt Company опубликовала релиз фреймворка Qt 6.9, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.9 предоставлена поддержка платформ Windows 10+, macOS 12+, Linux (Ubuntu 22.04/24.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.10/9.4, Debian 11.6), iOS 16+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2. Qt 6.9 получил статус промежуточного выпуска, общедоступная поддержка которого будет осуществляться 6 месяцев (+ ещё 6 месяцев для коммерческих пользователей).

Основные изменения в Qt 6.9:

  • Продолжено развитие модуля Qt Graphs, предназначенного для построения 2D- и 3D-графиков, а также визуализации больших коллекций быстро меняющихся данных. Модуль использует Qt Quick 3D и движок рендеринга RHI (Rendering Hardware Interface), поддерживающий различные 3D API (OpenGL, Vulkan, Metal и Direct 3D). В новой версии добавлена поддержка прозрачности в QML-типе Surface3D, реализован класс QSpline3DSeries для отрисовки данных в виде 3D-сплайнов, добавлены дополнительные возможности по настройке оформления диаграмм, осей и меток. Появилась возможность подстановки графиков в приложения на базе Qt Quick 3D, используя свойство “importScene” в сценах на базе View3D. Упрощена настройка параметров ввода в 2D-диаграммах. В QGraphsView появилась поддержка точного позиционирования прямоугольной области (plotArea) для отображения графика.

  • Реализована возможность определения в тексте кодов emoji и использования корректных цветных шрифтов для их отображения. В QFontDatabase добавлен новый API для выбора семейства шрифтов для emoji. В настоящее время поддерживаются шрифты в форматах CBDT и COLRv1. При желании парсинг emoji может быть отключён.




  • Добавлен API для создания интерфейсов, в которых элементы интерфейса смешиваются с содержимым и не отвлекают пользователя (контент охватывает всё пространство окна, без выделения заголовка). Для расширения области интерфейса приложения на всё окно добавлен флаг Qt.ExpandedClientAreaHint, а для выделения областей со служебными элементами, такими как заголовок, футер и меню, которые не должны пересекаться с внутренними элементами интерфейса приложения, в Qt Quick реализовано свойство “SafeArea”.

  • В модуль Qt SVG добавлена начальная поддержка CSS-анимации, которая пока применима только для свойств “color”, “fill”, “stroke” и “transform”.
  • Проведена работа по повышению производительности.
    • На системах с гибридными CPU, оснащёнными отдельными высокопроизводительными и энергоэффективными ядрами, в QThread добавлена возможность передачи планировщику подсказки на каком типе ядер CPU следует выполнять указанный поток.
    • Для приложений, использующих QQuickPaintedItem с OpenGL, разрешено использование режима отрисовки FramebufferObject, при котором применяется аппаратное ускорение.
    • В RHI-бэкенде (Rendering Hardware Interface) для OpenGL ES задействовано расширение с поддержкой мультисэмплированной отрисовки, позволяющей повысить производительность Qt Quick и Qt Quick 3D на современных GPU.
    • В RHI-бэкенд для Direct 3D добавлен отдельный поток для отслеживания завершения вертикальной развёртки (vblank), позволивший сократить задержки в интерактивных интерфейсах.
    • Во всех RHI-бэкендах, кроме OpenGL, добавлена поддержка механизма Variable Rate Shading (VRS), при помощи которого в приложениях виртуальной реальности на базе Quick 3D XR обеспечена поддержка отрисовки с учётом направления взгляда пользователя.
    • В Qt Quick предложен новый элемент RectangularShadow, позволяющий снизить нагрузку на CPU при использование в интерфейсе эффектов затенения и свечения.
    • В классе QHeaderView значительно снижено потребление памяти при отключении изменения размера и перегруппировки секций.
  • В Quick 3D реализована техника “Weighted Blended“, позволяющая отрисовывать прозрачные объекты без выполнения отдельных операций сортировки глубины. Реализованная техника позволяет исключить появление артефактов из-за неверной сортировки, возникающих когда объекты перекрывают друг друга. По нагрузке на процессор и потреблению памяти новый метод идентичен старому.

  • Добавлен модуль Qt Network Authorization, предоставляющий API для аутентификации при помощи протоколов OAuth1 и OAuth2, которые можно использовать для получения доступа к online-сервисам без раскрытия пользовательского пароля.
  • Проведена работа по усилению защиты модуля Qt HTTP Server. В QHttpServerConfiguration добавлена возможность ограничения максимального числа входящих запросов. В QHttp2Configuration для клиентов HTTP/2 добавлена поддержка настройки максимального числа одновременно создаваемых потоков.
  • В QML Language Server, реализации сервера LSP (Language Server Protocol) для QML, обеспечена отдача информации о структуре QML, позволяющая отображать иерархическое представление структуры QML в редакторах кода и интегрированных средах разработки.
  • В Qt Quick добавлен новый компонент ContextMenu, упрощающий привязку контекстных меню к элементам, открываемым при поступлении специфичных для платформ событий, таких как клик правой кнопкой мыши.
    Для компонентов TextField и TextArea добавлены контекстные меню по умолчанию.
Release. Ссылка here.