Компания Qt Company опубликовала релиз фреймворка Qt 6.7, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.7 обеспечена поддержка платформ 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. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2.
- Улучшена поддержка использования кода, в котором применяются элементы стандарта C++20. Добавлены классы Qt::{strong,weak,partial}_ordering с реализацией типов std::*_ordering, совместимых со спецификацией C++17, а также макросы, которые раскрываются в оператор трехстороннего сравнения “” при сборке компиляторами, поддерживающими C++20 (если компилятор поддерживает только C++17, макросы откатываются на использование обычных операторов).
Предоставлена возможность использования шаблона класса std::span для представления непрерывной последовательности объектов, который для систем с C++17 заменяется на класс QSpan. Продолжена работа по реализации поддержки библиотеки std::chrono в различных API Qt. Например, таймауты в API Qt Network теперь описываются с использованием типов std::chrono и задаются в форме литералов, таких как “5s” для обозначения 5 секунд.
- Продолжено развитие экспериментального модуля Qt Graphs, предназначенного для построения различных видов графиков и визуализации больших коллекций быстро меняющихся данных. Модуль развивается как универсальная замена старого модуля Qt DataVisualization, завязанного на OpenGL, и модуля Qt Charts. Новый модуль использует Qt Quick 3D и движок рендеринга RHI (Rendering Hardware Interface), поддерживающий различные 3D API (OpenGL, Vulkan, Metal и Direct 3D). В новой версии в дополнение к 3D-визуализации добавлена поддержка двумерных круговых и линейных графиков, а также диаграмм рассеяния. Обеспечена интеграция с доступными в Qt Quick средствами анимации и эффектами. Добавлена поддержка тем оформления. Проведена модернизация архитектуры, позволившая снизить число операций выделения памяти.
- Добавлены новые классы QHttpHeaders, QNetworkRequestFactory, QRestAccessManager и QRestReply для разработки клиентских приложений, использующих API на базе HTTP и архитектуры REST (REpresentational State Transfer).
- Расширены возможности модуля Qt GRPC, позволяющего обращаться к сервисам gRPC. В Qt gRPC добавлены новые классы для клиентских, серверных и двунаправленных потоковых вызовов, позволяющих организовать обмен сообщениями с автоматической активацией при изменении значений. Предложен API Interceptor для прикрепления callback-обработчиков для выбранных сообщений gRPC, которые можно использовать, например, для организации журналирования или кэширования.
- В модуль Qt Protobuf, предназначенный для выполнения сериализации Qt-классов, используя протокол Protocol Buffer, добавлена возможность сериализации в формат JSON или из него.
- В модуль векторной графики Qt SVG добавлена поддержка элементов SVG 1.1 и 2.0, часто используемых в SVG-изображениях на практике
(, , , и ), что позволяет отображать большинство SVG-файлов. Для тех кому необходима полная поддержка SVG 2.0 предлагается использовать модуль Qt WebEngine. Добавлена утилита svgtoqml для преобразования SVG в QML для импорта векторной графики напрямую в граф сцены Qt Quick.
Стабилизирована возможность использования модуля Qt Quick Shapes для высококачественной отрисовки кривых при помощи фрагментного шейдера. - Добавлена поддержка вариативных шрифтов, в которых толщина, ширина и другие стилистические характеристики глифа могут произвольно меняться. Добавлена поддержка библиотек пиктограмм. При использовании вызова QIcon::fromTheme реализована возможность сопоставления имени пиктограммы с символом в библиотеке пиктограмм.
- Предоставлена возможность встраивания родных для текущей платформы окон в сцену Qt Quick, что позволяет задействовать в интерфейсе на базе Qt Quick элементы интерфейса, предоставляемые платформой, например, можно встроить AppKit MapView или Windows Media player.
- Добавлена поддержка добавления в приложения на базе Qt Quick или Qt Widgets кода отрисовки, использующего любой поддерживаемые в Qt графический API (Vulkan, OpenGL, Direct3D, Metal). Добавление производится при помощи классов QRhiQuickItem и QRhiWidget.
- Обеспечена полная поддержка платформ macOS 14, iOS 17, Windows 11 23H2, Android 14. RHEL 9.2, openSUSE 15.5, SUSE Linux Enterprise Server 15. Добавлены сборки для Windows, собранные при помощи инструментария MinGW на базе LLVM. Добавлены предварительные сборки для архитектуры ARM (для Windows и Linux), для платформы VxWorks 7 и для QNX 7.1.
- Обновлён стек Boot2Qt, который может использоваться для создания загружаемых мобильных систем с окружением на базе Qt и QML. Системное окружение в Boot2Qt обновлено до платформы Yocto 4.3.
- Добавлены новые примеры приложений. Добавлен пример 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 для показа данных о биржевых котировках.
Дополнительно можно отметить публикацию интегрированной среды разработки Qt Creator 13.0, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Поддерживается как разработка классических программ на языке C++, так и использование языка QML, в котором для определения сценариев используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками. Готовые сборки сформированы для Linux, Windows и maсOS.
В новой версии:
- Добавлены offline- и online-инсталляторы для ARM-систем с Linux.
- Обновлено оформление интерфейса Welcome to Qt Creator, в котором появилась поддержка тёмных и светлых тем.
- Улучшен интерфейс для перемещения панелей, применяемый в режиме отладки и создания виджетов (Widget Designer). Для вертикальных панелей добавлена поддержка временного сворачивания. Предоставлена возможность свободного перемещения панелей за их заголовок без предварительного отключения закрепления.
- Добавлена поддержка создания, развёртывания, запуска и отладки приложений для устройств, на которых используется Qt Application Manager (для приложений на базе Qt 6 и CMake).
- Добавлена частичная поддержка iOS 17.
- Изменён сборочный каталог по умолчанию, для которого теперь используется подкаталог “build” в коде проекта. Изменить сборочный каталог можно при помощи настройки “Preferences > Build & Run > Default Build Properties > Default build directory”.
- В режиме проекта добавлена секция “Vanished targets”, в которой отображаются kit-наборы (привязки к разным сборочным инструментариям и версиям Qt), которые уже недоступны, и предоставляется возможность создания замены или использования при сборке, развёртывании и запуске другого существующего kit-набора.
- Предоставлена возможность создания kit-наборов для проектов на языке Python (для выбора другой версии интерпретатора).
- Добавлена возможность использования серверов LSP (Language Server Protocol) для YAML, JSON и Bash.
- Обеспечена поддержка перехода из компонентов QML к связанному с ними коду на C++.
- Проведена реорганизация настроек ClangFormat. Для изменения собственных настроек предоставлен текстовый редактор параметров с проверкой синтаксиса.