В последнем релизе фреймворка Qt 6.6 компания Qt Company продолжает работу над стабилизацией и расширением функционала ветки Qt 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 Quick есть экспериментальная поддержка адаптивного макета интерфейса. Для изменения макета интерфейса в зависимости от размера окна и автоматического размещения элементов с учётом текущего макета, предлагается использовать класс LayoutItemProxy. В модуле Qt Quick Layouts можно использовать одинаковые размеры ячеек для макетов с расположением элементов в сетке, строках и столбцах.
В QML-типе TableView в Qt Quick была добавлена поддержка режимов выделения, которые могут быть применены к ячейкам, строкам, столбцам и наборам ячеек. Также была предоставлена возможность изменять свойство rootIndex. В QML-типе TreeView теперь можно более гибко управлять оформлением полос прокрутки с использованием свойства scroll-deceleration в QML-типе Flickable. Также было реализовано автоматическое сокращение файловых путей. Теперь в QML доступен API для управления полномочиями.
В настоящее время в разработке находится экспериментальный модуль Qt Graphs, который призван быть универсальным инструментом для визуализации больших наборов данных, которые часто изменяются, а также для создания различных видов графиков. Этот модуль является заменой устаревшего модуля Qt DataVisualization, основанного на OpenGL, и модуля Qt Charts. В настоящее время основной фокус разработки модуля Qt Graphs - это воссоздание функциональности Qt DataVisualization с использованием Qt Quick 3D и нового движка рендеринга RHI, который поддерживает различные 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 для доступа к настройкам приватности и безопасности. Это позволяет отключать отдельные возможности браузерного движка. Например, можно отключить API Fetch и отрисовку элементов Canvas для снижения риска пассивной идентификации с помощью атрибутов QWebEngineUrlScheme::FetchApiAllowed и QWebEngineSettings::DisableReadingFromCanvas. Также добавлена поддержка внутреннего URL "chrome://qt", по открытии которого будет показана информация о версии используемого движка Chromium.
В Qt Sql модуль был добавлен плагин, который поддерживает СУБД Mimer SQL. Также были расширены настройки соединения в драйвере для СУБД MySQL и MariaDB.
В модуле Qt PDF теперь доступны классы для работы с ссылками, миниатюрами страниц и выбранными страницами.
В Qt Quick в типе Font внедрен новый интерфейс программирования приложений (API), позволяющий дополнительно настроить форматирование глифов в шрифтах OpenType. С тем же самым модулем Qt Quick Shapes предусмотрена возможность улучшенной отрисовки линий и кривых с использованием фрагментных шейдеров.
Была проведена работа по документированию движка рендеринга RHI (Rendering Hardware Interface) и стабилизации связанного с ним низкоуровневого API. Теперь уровень поддержания обратной совместимости для RHI будет соответствовать API Qt Platform Abstraction. Это позволит разработчикам напрямую использовать RHI для создания кросс-платформенного низкоуровневого кода, который будет работать с любыми популярными графическими стеками и API (такими как OpenGL, Vulkan, Metal и Direct 3D).
Модуль Qt Quick 3D теперь позволяет процедурно создавать текстуры и геометрию на основе полигональной сетки прямо из QML.
Модуль Qt TextToSpeech теперь имеет новую функцию: возможность генерировать данные PCM (Pulse-Code Modulation) для обработки синтезированной речи. Раньше этот модуль поддерживал только прямой вывод речи на звуковое устройство. Теперь доступны дополнительные настройки для сегментирования текста, а также API для поиска нужных голосов и определения доступных функций движка.
В новую версию набора модулей "Qt for Python" была добавлена поддержка асинхронных операций с помощью asyncio. Теперь Qt for Python совместима с устройствами, работающими на архитектуре AArch64.
Был обновлен стек Boot2Qt, который теперь позволяет создавать загружаемые мобильные системы с окружением на базе Qt и QML. В Boot2Qt также обновлено системное окружение до платформы Yocto 4.2 (Mickledore). Кроме того, в данный момент ведется работа над готовыми сборками Boot2Qt для платформ NXP и устройств Renesas R-Car.
Добавлена поддержка Android 13. Улучшена поддержка архитектуры ARM на платформах Windows и Linux. Вместе с разработчиками из проекта Debian, пакеты с Qt 6 были добавлены в официальные репозитории дистрибутивов Debian 11 и Debian 12. Коммерческие компоненты Qt 6.6 для Debian можно найти в репозитории Qt Company.
Средства разработки для платформы WebAssembly были улучшены, что позволяет создавать Qt-приложения, которые работают в веб-браузере и переносимы между разными аппаратными платформами. Приложения, созданные для платформы WebAssembly, имеют высокую производительность, близкую к нативному коду, благодаря JIT-компиляции, и могут использовать возможности Qt Quick, Qt Quick 3D и другие инструменты визуализации, доступные в Qt. В новой версии также упрощена отладка приложений для WebAssembly и улучшено сопровождение этой платформы с помощью поддержки динамического связывания, что позволяет приложениям для WebAssembly поставляться с общими библиотеками и плагинами Qt.