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

Компания Qt Company опубликовала релиз фреймворка Qt 6.6, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.6 обеспечена поддержка платформ Windows 10+, macOS 11+, Linux (Ubuntu 22.04, openSUSE 15.4, SUSE 15 SP4, RHEL 8.6/9.0), iOS 14+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY и QNX. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2.

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

  • В модуле Qt Quick реализована экспериментальная поддержка адаптивной компоновки интерфейса. Для динамического изменения раскладки интерфейса в зависимости от размера окна и автоматического размещения элементов с учётом структуры текущей раскладки предложен класс LayoutItemProxy, а в модуле Qt Quick Layouts предоставлена возможность использования единых размеров ячеек для раскладок с расположением элементов по сетке, строкам и столбцам.

  • В Qt Quick добавлена поддержка режимов выделения (свойство selectionMode) в QML-типе TableView (например, можно управлять выделением ячеек, строк, столбцов и наборов ячеек), предоставлена возможность изменения свойства rootIndex, в QML-типе TreeView расширено управление оформлением полос прокрутки (scroll-deceleration) в QML-типе Flickable, реализовано автоматическое сокращение файловых путей. Предоставлен доступ из QML к API управления полномочиями.
  • Добавлен экспериментальный модуль Qt Graphs, нацеленный на предоставление универсального модуля для визуализации больших коллекций быстро меняющихся данных и построения различных видов графиков. Модуль развивается как универсальная замена старого модуля Qt DataVisualization, завязанного на OpenGL, и модуля Qt Charts. Модуль ещё находится в разработке и в настоящее время сосредоточен на воспроизведении функциональности Qt DataVisualization поверх Qt Quick 3D и использовании нового движка рендеринга (RHI, Rendering Hardware Interface), поддерживающего различные 3D API (OpenGL, Vulkan, Metal и Direct 3D).

  • В модуле Qt Multimedia добавлен класс QWindowCapture для захвата содержимого отдельных окон, дополнивший появившийся в прошлом выпуске класс QScreenCapture, ограниченный возможностью захвата всего экрана. QWindowCapture позволяет получить список окон, доступных для захвата, и может применяться в приложениях для предоставления совместного доступа к окнам. Захват окон и экрана поддерживается при использовании бэкенда FFmpeg на всех платформах, кроме систем, применяющих протокол Wayland.
  • В класс QMediaRecorder добавлены свойства для управления качеством видео, разрешением и битрейтом.
  • Расширены возможности модулей Qt GRPC и Qt Protobuf, позволяющих обращаться к сервисам gRPC и выполнять сериализацию Qt-классов, используя протокол Protocol Buffer. В Qt GRPC добавлены новые опции QGrpcChannelOptions и QGrpcCallOptions для упрощения настройки каналов и вызовов, а также для ограничения максимального времени выполнения вызова или потока, а также опция QGrpcMetadata для выставления метаданных клиентом и чтения метаданных, возвращённых сервером. В Qt GRPC интегрирована поддержка QML-типа для автоматической генерации клиентских классов QtGRPC. В Qt Protobuf разрешено включение в схему *.proto некоторых типов Qt Core и Qt GUI, а также предоставлена возможность доступа к QML-контекстам через классы QProtobufMessage. Добавлена поддержка типов google.protobuf.Any и oneof.
  • В модуль Qt WebEngine добавлен API для доступа к настройкам конфиденциальности и безопасности, который позволяет отключить отдельные возможности. Например, при помощи атрибутов QWebEngineUrlScheme::FetchApiAllowed и QWebEngineSettings::DisableReadingFromCanvas можно отключить API Fetch и отрисовку элементов Canvas для снижения риска пассивной идентификации. Добавлена поддержка внутреннего URL “chrome://qt”, при открытии которого показывается страница с информацией об используемой версии движка Chromium.
  • В модуле Qt Sql добавлен плагин с поддержкой СУБД Mimer SQL, расширены настройки соединения в драйвере для СУБД MySQL и MariaDB.
  • В модуле Qt PDF предоставлены классы для доступа к ссылкам, миниатюрам страниц и выбранным страницам.
  • В Qt Quick в тип Font реализован новый API для расширенной настройки компоновки глифов (shaping) в шрифтах OpenType. Предоставлена возможность использования модуля Qt Quick Shapes для высококачественной отрисовки линий и кривых при помощи фрагментного шейдера.

  • Проведена работа документированию движка рендеринга RHI (Rendering Hardware Interface), позволяющего использовать API OpenGL, Vulkan, Metal и Direct 3D при отрисовке на разных платформах, а также стабилизации связанного с ним низкоуровневого API. Уровень поддержания обратной совместимости для RHI теперь будет соответствовать API Qt Platform Abstraction, что позволит напрямую использовать RHI для разработки кросс-платформенного низкоуровневого кода, работающего со всеми популярными графическими стеками.
  • В модуль Qt Quick 3D добавлена поддержка процедурного создания из QML текстур и геометрии на основе полигональной сетки.
  • В модуле Qt TextToSpeech появилась возможность генерации данных PCM (Pulse-Code Modulation) для дальнейшей обработки синтезированной речи (ранее поддерживался только прямой вывод на звуковое устройство). Предоставлены дополнительные настройки сегментирования текста, добавлен API для поиска необходимых голосов и API для определения доступных функций движка.
  • В набор модулей “Qt for Python”, предоставляющий средства для создания графических приложений на языке Python с использованием Qt, добавлена поддержка асинхронный операций при помощи asyncio. Обеспечена совместимость Qt for Python с устройствами на базе архитектуры AArch64.
  • Обновлён стек Boot2Qt, который может использоваться для создания загружаемых мобильных систем с окружением на базе Qt и QML. Системное окружение в Boot2Qt обновлено до платформы Yocto 4.2 (Mickledore). Ведётся работа по предоставлению готовых сборок Boot2Qt для плат NXP и устройств Renesas R-Car.
  • Добавлена поддержка платформы Android 13. На платформах Windows и Linux улучшена поддержка архитектуры ARM. Совместно с сопровождающими из проекта Debian в штатных репозиториях дистрибутива размещены пакеты с Qt 6 для Debian 11 и Debian 12, а в репозитория Qt Company – пакеты с коммерческими компонентами Qt 6.6 для Debian.
  • Улучшены средства разработки для платформы WebAssembly, позволяющие создавать Qt-приложения, работающие в web-браузере и переносимые между разными аппаратными платформами. Приложения, собираемые для платформы WebAssembly, благодаря JIT-компиляции выполняются с близкой к нативному коду производительностью, могут использовать Qt Quick, Qt Quick 3D и доступные в Qt средства визуализации. В новой версии упрощена отладка приложений для WebAssembly и улучшено сопровождение данной платформы благодаря поддержке динамического связывания (приложения для WebAssembly теперь могут поставляться с общими библиотеками и плагинами Qt).
Release. Ссылка here.