Компания Qt Company опубликовала релиз фреймворка Qt 6.8, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.8 предоставлена поддержка платформ Windows 10+, macOS 12+, Linux (Ubuntu 22.04/24.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2.
Qt 6.8 получил статус LTS-выпуска, для которого обновления будут формироваться в течение пяти лет для обладателей коммерческой лицензии, что на два года больше, чем в прошлых LTS-выпусках. Для некоммерческих пользователей время сопровождения составит полгода (до формирования нового значительного выпуска). Поддержка прошлой LTS-ветки Qt 6.5 продлится до мая 2026 года, а поддержка позапрошлой LTS-ветки Qt 6.2 прекращена 30 сентября 2024 года. Ветка Qt 5.15 будет сопровождаться до мая 2025 года.
- Стабилизирован и переведён в разряд полностью поддерживаемых модуль Qt Graphs, предназначенный для построения различных видов 2D- и 3D-графиков, а также визуализации больших коллекций быстро меняющихся данных. Модуль развивается как универсальная замена старого модуля Qt DataVisualization, завязанного на OpenGL, и модуля Qt Charts. Новый модуль использует Qt Quick 3D и движок рендеринга RHI (Rendering Hardware Interface), поддерживающий различные 3D API (OpenGL, Vulkan, Metal и Direct 3D).
По сравнению с прошлым выпуском в Qt Graphs 3D добавлены оптимизации производительности, обеспечена поддержка прозрачности в графиках Bars3D, расширены возможности управления местоположением и оформлением меток и заголовков, улучшена отрисовка линий навигационной сетки. В Qt Graphs 2D предоставлена возможность отрисовки собственных видов столбчатых диаграмм, используя QML-компоненты, добавлена поддержка стековых столбчатых диаграмм, расширены средства отображения меток.Унифицирован API для использования тем оформления 2D- и 3D-графиков. Специфичные для виджетов вызовы перенесены в модуль Qt Graphs Widgets.
- Стабилизирован и переведён в разряд полностью поддерживаемых модуль QtHttpServer, позволяющий интегрировать в приложения функциональность HTTP-сервера, который поддерживает HTTP/1.1, TLS/HTTPS, WebSockets, обработку ошибок, маршрутизацию запросов на основе параметров в URL (QHttpServerRouter) и REST API.
- Стабилизирован и переведён в разряд полностью поддерживаемых модуль Qt GRPC, позволяющий обращаться к сервисам при помощи протокола gRPC.
- Стабилизирован и переведён в разряд полностью поддерживаемых модуль Qt Protobuf, предназначенный для сериализации Qt-классов, используя протокол Protocol Buffer.
- Добавлена поддержка мобильных платформ Android 14 и iOS 18.
- Предоставлена возможность разработки приложений для настольных систем Linux и Windows с процессорами ARM, а также 3D-шлемов Apple Vision Pro и Meta Quest 3 XR.
- Добавлена поддержка Raspberry Pi 5, NVIDIA AGX Orin и некоторых плат на базе SoC NXP, Toradex и STM. Добавлена поддержка RISC-V плат StarFive VisionFive 2.
- Расширены возможности для формирования урезанных сборок Qt, которые могут использоваться на устройствах с небольшим объёмом памяти. Например, отключив неиспользуемые возможности и компоненты Qt можно добиться сокращения размера сборки в постоянном хранилище на 77% и уменьшения потребления ОЗУ на 32%, а также заметно сократить время запуска.
- В модуле Qt Multimedia на платформе Linux реализована поддержка захвата экрана с использованием класса QScreenCapture в окружениях на базе протокола Wayland, используя сервис ScreenCast и систему порталов XDG Desktop. Добавлены классы QVideoFrameInput, QAbstractVideoBuffer и QAudioBufferInput, при помощи которых можно организовать отправку собственных мультимедийных данных в сеанс записи (QMediaCaptureSession), а также класс QAudioBufferOutput для подключения обработчика для потока декодированных звуковых данных.
- Добавлен модуль Qt Quick Vector Image, позволяющий интегрировать в сцены Qt Quick векторные изображения в формате SVG, что может быть использовано, например, для создания масштабируемых элементов интерфейса, не зависящих от разрешения и размера экрана.
- Добавлен модуль Qt Quick 3D XR для создания приложений для платформ виртуальной и дополненной реальности, используя технологии Qt Quick 3D. Поддерживается использование устройств для отслеживания движения рук и VR-контроллеров для организации взаимодействия с трёхмерными окружениями, созданными при помощи Qt Quick 3D и визуализированными в очках Apple VisionPro или 3D-шлемах с поддержкой стандарта OpenXR, таких как Meta Quest 2/3.
- В Qt Quick добавлены оптимизации, ускоряющие отрисовку сложных сцен. В модуле Qt Quick Effect Maker появилась поддержка анимирования спрайтов, искривления элементов в круг или дугу, а также использования в эффектах свечения и выборочного размытия (masked blur). В модуле Qt Quick Shapes при заливке контура разрешено использование в элементах с типом ShapePath любых провайдеров текстур. В класс QQuickRenderTarget добавлены новые методы для управления обработкой текстур и упрощения интеграции Qt Quick 3D с внешними движками, фреймворками и API.
В классе TableView появилась возможность перемещения столбцов и строк. В типах Image и BorderImage реализована поддержка асинхронной загрузки изображений (старое изображение остаётся пока грузится новое). - В Qt Quick Controls предложен новый стиль Fluent WinUI3, позволяющий сформировать интерфейс, выглядящий как Windows 11 на любых платформах. На платформе macOS реализована возможность использования предоставляемого платформой глобального меню в интерфейсах, создаваемых при помощи Quick MenuBar.
- В Qt Quick 3D улучшена отрисовка теней, благодаря использованию каскадных карт теней и мягкой фильтрации теней. В тип PrincipledMaterial добавлены новые свойства. Предоставлена возможность использования в собственных материалах тех же свойств, что и в материалах на базе типа PrincipledMaterial.
- В классе QNetworkAccessManager реализована возможность отправки HTTP-запросов через локальный сокет. Предоставлена возможность использования класса QFormDataBuilder для упрощения передачи нескольких наборов данных (например, текстовых данных и приложенного файла) в одном HTTP-запросе (multi-part).
- В модуль Qt Network Auth добавлен класс QOAuthUriSchemeReplyHandler для создания обработчиков редиректа на другую схему URI при аутентификации при помощи OAuth 2.0. В класс QOAuth2AuthorizationCodeFlow добавлена поддержка OAuth-расширения PKCE (Proof Key for Code Exchange).
- В класс QDnsLookup добавлена возможность отправки запросов, используя “DNS over TLS”, реализована поддержка DNS-записей TLSA (TLS Certificate Association) и обеспечено информирование клиента о выполнении верификации данных DNS-сервером.
- В Qt Core добавлен класс QChronoTimer с обвязкой над библиотекой std::chrono, позволяющей добиться повышения точности операций со временем. Реализована возможность изменения размера QString, QByteArray и QList без инициализации данных. В QHash добавлена поддержка хранения в одном хэше данных с типами QString и QStringView. В QDirListing предоставлен API на базе итератора для перебора содержимого каталогов.
- В Qt GUI предоставлена возможность переопределения настроек системной цветовой схемы, например, для выбора тёмного или светлого режима, а также настроек действий, приводящих к вызову контекстного меню.
- В Qt Sql драйверы СУБД PostgreSQL и MySQL/MariaDB теперь корректно обрабатывают время и даты в ситуации когда у клиента и на сервере выбраны разные часовые пояса.
- Qt WebEngine добавлены новые классы: QWebEngineFrame для работы на уровне отдельных iframe-блоков; QWebEngineClientHints для управления идентификацией браузера; QWebEnginePermission для управления правами доступа в привязке к сайтам.
- В Qt Widgets улучшена отрисовка виджетов на экранах с высокой плотностью пикселей (high-DPI).
- Генератор документации QDoc переведён с C API на С++ API и для его работы теперь требуется как минимум Clang 17. Добавлены новые команды, такие как “keyword” и “nativetype”.
- В рамках работы по повышению стабильности и производительности LTS-выпуска внесено более 500 исправлений и оптимизаций.