|
Компания Qt Company опубликовала релиз фреймворка Qt 6.11, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.11 предоставлена поддержка платформ Windows 10+, macOS 13+, Linux (Ubuntu 22.04/24.04, openSUSE 15.6/16, SUSE 15 SP6, RHEL 8.10/9.6/10, Debian 11.6/12), iOS 17+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2. Qt 6.11 получил статус промежуточного выпуска, общедоступная поддержка которого будет осуществляться 6 месяцев (+ ещё 6 месяцев для коммерческих пользователей).
Основные изменения в Qt 6.11:
- Добавлен модуль Qt Canvas Painter, предоставляющий API для аппаратно ускоренной отрисовки 2D-контента, построенный с оглядкой на HTML-спецификацию Canvas 2D Context. Для отрисовки задействован движок RHI (Rendering Hardware Interface), поддерживающий различные 3D API (OpenGL, Vulkan, Metal и Direct 3D), благодаря чему удалось добиться существенного повышения производительности. В проведённых тестах Qt Canvas Painter оказался быстрее QPainter с бэкендом OpenGL в 2 раза на типовом ноутбуке Lenovo ThinkPad P16 Gen 2, в 5 раз на бюджетном Android-планшете Lenovo Tab M10 HD и в 10 раз на топовом Android-планшете Samsung Galaxy Tab S8.
Помимо высокой производительности в Qt Canvas Painter реализована поддержка таких расширенных возможностей, как настраиваемое сглаживание (antialiasing), обрамляющие градиенты и тени (QCanvasBoxGradient и QCanvasBoxShadow наподобие CSS-свойства box-shadow), сетчатые шаблоны (QCanvasGridPattern), пользовательские шейдерные кисти и цветовые эффекты для изменения прозрачности, яркости, контраста и насыщенности.
- Функциональность модуля Qt Quick 3D приближена к возможностям игровых движков. Добавлена поддержка техники рендеринга
SSGI (Screen Space Global Illumination) для симуляции отражения света от поверхностей на стадии пост-обработки (альтернатива запеканию карт освещения (lightmap)) и SSR (Screen Space Reflections) для реалистичной отрисовки отражений в реальном времени. Алгоритм сглаживания движущихся объектов улучшен за счёт генерации векторов движения для каждого объекта. Реализованы настраиваемые проходы рендеринга (render-pass), которые можно использовать напрямую из QML для масок слоёв, эффектов пост-обработки и определения объектов по цвету (color picking). Добавлены новые программные интерфейсы для слоёв и тегов, позволяющие управлять отдельными проходами рендеринга, включением элементов на разных этапах конвейера рендеринга (render pipeline) и перенаправлением в целевые буферы рендеринга.
- Расширены возможности модуля Qt Graphs. Добавлен тип CustomSeries, позволяющий создавать собственные графики, в которых за отрисовку каждого элемента данных отвечает заданный пользователем делегат. В
3D-графиках реализована поддержка нескольких экземпляров осей, например, в QBar3DSeries можно использовать отдельные оси для rowAxis, valueAxis и columnAxis, а в QScatter3DSeries и QSurface3DSeries - отдельные оси для axisX, axisY и axisZ. Добавлены новые свойства для переопределения цветов для отдельных осей, настройки градиентов на графиках, изменения стиля линий, позиционирования меток. Добавлен пример создания настраиваемых 2D- и 3D-графиков - Wind Turbine Dashboard.
- Добавлен экспериментальный модуль Qt TaskTree, предоставляющий декларативный подход для создания и выполнения асинхронных задач на C++. Ключевыми компонентами Qt TaskTree являются: "рецепты" - повторно используемые объекты, описывающие асинхронный рабочий процесс; "группы" - определяют политики для дочерних задач; "хранилище" для совместного использования данных между задачами; "итераторы" для циклов и повторного выполнения задач. Qt TaskTree также решает проблему несовместимости между API, унифицируя различные асинхронные API в типовой интерфейс.
- Расширены возможности для работы с анимированной векторной графикой, формируемой из изображений в форматах SVG и Lottie. Стабилизированы модуль Qt Quick VectorImage и инструмент lottietoqml.
Добавлена поддержка морфинг-анимации, масок SVG, символов SVG и слоёв-масок (matte layer, для управления видимостью другого слоя).
- В Qt Quick Controls добавлен компонент DoubleSpinBox. В DialogButtonBox реализована возможность управления обработкой кнопок по умолчанию. В эффекте RectangularShadow появилось независимое управление радиусами углов.
- В Qt Widgets в QWizard добавлена опция StretchBanner; в QAbstractItemView реализован параметр keyboardSearchFlags для настройки поведения поиска по мере нажатия клавиш; в QColumnView добавлено свойство для управления видимостью предпросмотра.
- Добавлен модуль Qt OpenAPI, позволяющий сгенерировать код HTTP-клиента, использующего Qt Networks RESTful API, на основе спецификации OpenAPI в формате YAML.
- В модуль Qt GRPC добавлен механизм для управления потоком и содержимым запросов и ответов.
- В модуле Qt HTTP Server расширены средства управления лимитами и улучшена обработка ответов в рабочем потоке. В QNetworkRequest появилась возможность настройки параметров TCP Keep Alive (по умолчанию неактивные соединения автоматически завершаются через 2 минуты).
- В QML Language Server, применяемый для интеграции с IDE, добавлена информация о месте определения типа QML в коде C++ для упрощения навигации между QML и C++ из IDE - при работе с C++ кодом можно находить QML объекты по идентификаторам и легко обходить иерархию QML-контекстов.
- В дополнение к QRangeModel реализован класс QRangeModelAdapter, предоставляющий C++ API для изменения данных модели, взаимодействуя через протокол QAbstractItemModel, что упрощает передачу данных из кода бэкенда на C++ в Qt Quick или Qt Widget.
- Добавлена поддержка платформы Android 16. Реализована функциональность Google Play Feature Delivery для разделения приложения на пакеты (основной пакет устанавливается из Google Play сразу, а дополнительные подгружаются по мере необходимости). Для Android Automotive реализована поддержка запуска Qt без Android-зависимостей для быстрого старта отрисовки.
Дополнительно можно отметить опубликованный на днях релиз интегрированной среды разработки Qt Creator 19, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Поддерживается как разработка классических программ на языке C++, так и использование языка QML, в котором для определения сценариев используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками. Готовые сборки сформированы для Linux, Windows и maсOS.
Из новшеств выделяется режим minimap (Preferences > Text Editor > Display > Enable minimap), выводящий рядом с полосой прокрутки мини-эскиз всего содержимого, позволяющий разом охватить взглядом весь код.
В состав встроен простой MCP-сервер для интеграции с AI-ассистентами, позволяющий открывать файлы и проекты, запускать сборку, производить отладку. Упрощена настройка сборки на внешних устройствах - добавлена кнопка Run Auto-Detection для автоматического определения версии Qt, компилятора, отладчика и CMake после регистрации устройства. Реализована поддержка прямого доступа к файловым системам подключённых устройств, Android-устройств и эмуляторов.
|