В этом месяце много релизов, хороших и разных. Так, на днях компания Qt Company опубликовала релиз фреймворка Qt 6.7. Разработчики придерживаются прежней стратегии как по стабилизации работы, так и по увеличению функций ветки Qt 6. Поддерживается много платформ, включая Windows 10+, macOS 12+, Linux (Ubuntu 22.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Подробности — под катом.
![](https://habrastorage.org/getpro/habr/upload_files/c35/88d/8e2/c3588d8e243a2c4a1d7cc1d1b7dc8a0f.jpg)
Главные изменения и дополнения:
Одно из наиболее интересных нововведений имеет отношение к модулю Qt Graphs. Он экспериментальный и предназначен для создания разных графиков, а также визуализации больших коллекций быстро меняющихся данных. Модуль развивается в качестве универсальной замены «предка» — Qt DataVisualization, завязанного на OpenGL, и модуля Qt Charts.
Что касается новинки, то она использует Qt Quick 3D и движок рендеринга RHI (Rendering Hardware Interface). Последний поддерживает разные 3D API (OpenGL, Vulkan, Metal и Direct 3D). В новой версии добавлена поддержка двумерных круговых и линейных графиков плюс диаграмм рассеяния. Плюс обеспечена интеграция со всеми инструментами и эффектами анимации, которые доступны в Qt Quick.
![](https://habrastorage.org/getpro/habr/upload_files/a66/860/ec3/a66860ec382d38e7d4e8622330bdc27d.png)
Ещё появились новые классы QHttpHeaders, QNetworkRequestFactory, QRestAccessManager и QRestReply, они нужны для разработки клиентских приложений. Но не всех, а тех, где применяется API на базе HTTP и архитектуры REST (REpresentational State Transfer).
В модуле векторной графики Qt SVG появилась поддержка элементов SVG 1.1 и 2.0, часто используемых в SVG-изображениях на практике (<symbol>, <marker>, <pattern>, <mask> и <filter>). Это даёт возможность отображать подавляющее большинство SVG-файлов. Также добавлена и утилита svgtoqml для преобразования SVG в QML для импорта векторной графики напрямую в граф сцены Qt Quick.
Ещё одно важное обновление касается работы с кодом, где задействованы элементы стандарта С++20. Здесь добавлены классы Qt::{strong,weak,partial}_ordering с реализацией типов std::*_ordering, совместимых со спецификацией C++17, а также макросы, которые раскрываются в оператор трёхстороннего сравнения "<=>" при сборке компиляторами, поддерживающими C++20 (если компилятор поддерживает только C++17). Кроме того, теперь можно использовать шаблон класса std::span для представления непрерывной последовательности объектов, который для систем с C++17 заменяется на класс Qspan. Также разработчики выдерживают и стратегию расширения поддержки библиотеки std::chrono в различных API Qt.
Значительно увеличены возможности такого важного модуля, как Qt GRPC, который даёт возможность обращаться к сервисам gRPC. В него добавлены новые классы, причём для разных потоковых вызовов, включая клиентские, серверные и двунаправленные потоковые вызовы. Они дают возможность обеспечить обмен сообщениями с автоматической активацией при изменении значений.
Также в модуле Qt Protobuf, который предназначается для выполнения сериализации Qt-классов, появилась возможность сериализации в формат JSON или из него.
А ещё появилась возможность встраивания нативных окон в сцену Qt Quick. Это обеспечивает возможность задействования в интерфейсе на базе Qt Quick элементов интерфейса, предоставляемых платформой, — например, можно встроить AppKit MapView или Windows Media player.
![](https://habrastorage.org/getpro/habr/upload_files/f70/dbc/45b/f70dbc45b607fca078bacde3b175a1b0.png)
Обеспечена крайне важная для многих поддержка платформ macOS 14, iOS 17, Windows 11 23H2, Android 14, RHEL 9.2, openSUSE 15.5, SUSE Linux Enterprise Server 15. Добавлены сборки для Windows. Более того, добавлены и предварительные сборки для ARM-архитектуры, для платформы VxWorks 7 и для QNX 7.1.
Для приложений добавлены новые примеры. Так, это Lightning Viewer, использующий Qt Location и Qt Quick Controls для наглядной визуализации данных о грозах на карте. Новая демонстрация OSM Buildings, использующая Qt Quick 3D, Qt Positioning и Qt Network для создания 3D-карты зданий на основе информации с OpenStreetMap. В примере Virtual Assistant продемонстрированы возможности по работе с 3D-анимацией. В примере Volumetric rendering показано, как использовать 3D-текстуры в Qt Quick 3D для объёмной трассировки лучей. Полностью переделан пример StocQt, использующий Qt Graphs для показа данных о биржевых котировках.
Коснулись изменения и интерфейса для перемещения панелей. Он применяется в режиме отладки и создания виджетов (Widget Designer).
Нельзя не отметить и появления интегрированной среды разработки Qt Creator 13.0, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Так, сейчас поддерживается как работа с C++, так и с QML, в котором для определения сценариев используется JavaScript.
![](https://habrastorage.org/getpro/habr/upload_files/9fa/33a/8c3/9fa33a8c30bba65dafe22f2cf37716fa.png)
Предоставлена возможность создания kit-наборов для проектов на языке Python (для выбора другой версии интерпретатора).
Добавлена возможность использования серверов LSP (Language Server Protocol) для YAML, JSON и Bash.
В редакторе кода обеспечена поддержка перехода из компонентов QML к связанному с ними коду на C++.
Проведена реорганизация настроек ClangFormat. Для изменения собственных настроек предоставлен текстовый редактор параметров с проверкой синтаксиса.
Наконец-то появилась частичная поддержка 17-й версии iOS.
Интегрирована возможность создания, развёртывания, запуска и отладки приложений для устройств, на которых используется Qt Application Manager (для приложений на базе Qt 6 и CMake).
Стоит отметить, что исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2.