Компания 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 на типичен лаптоп Lenovo ThinkPad P16 Gen 2, пет пъти на бюджетния Android таблет Lenovo Tab M10 HD и десет пъти на топовия 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 Widgets.
- Добавена е поддръжка за платформа Android 16. Реализирана е функционалност Google Play Feature Delivery за разделяне на приложението на пакети (основният пакет се инсталира от Google Play веднага, а допълнителните се изтеглят при необходимост). За Android Automotive е реализирана поддръжка за стартиране на Qt без зависимости от Android за бърз старт на рендерирането.
Допълнително може да се спомене наскоро публикуваният релиз на интегрираната среда за разработка Qt Creator 19, предназначена за създаване на кросплатформени приложения с помощта на библиотеката Qt. Поддържа се както разработката на класически програми на C++, така и използването на QML, в който за определяне на сценарии се използва JavaScript, а структурата и параметрите на елементите на интерфейса се задават с блокове, подобни на CSS. Готовите сборки са формулирани за Linux, Windows и macOS.
От нововъведенията се отличава режимът minimap (Preferences > Text Editor > Display > Enable minimap), който показва мини-ескиз на цялото съдържание до лентата за превъртане, позволяващ да се види цялото кодово съдържание наведнъж. Вграден е прост MCP-сървър за интеграция с AI асистенти, който позволява отваряне на файлове и проекти, стартиране на сборки и извършване на отладка. Настройването на сборки на външни устройства е опростено — добавен е бутонът Run Auto-Detection за автоматично определяне на версията на Qt, компилатора, отладчика и CMake след регистрация на устройството. Реализирана е поддръжка за директен достъп до файловите системи на свързаните устройства, Android устройства и емулатори.

Източник: opennet.ru





