В ней появилась поддержка новой платформы, много нового функционала — часть его доступна в ознакомительной версии (TP) — и ещё много доработок под капотом. Начнём с главной изюминки — это WebAssembly. Подробности — к старту нашего курса по разработке на C++.


WebAssembly


В Qt 6.4 мы убираем из ознакомительной версии поддержку WebAssembly. С Qt для WebAssembly, а также навыками и кодом, который у разработчиков часто уже есть, они могут нацелиться на веб. Приложения, ориентированные на платформу Web Assembly, могут запускаться в большинстве современных веб-браузеров. Они распространяются так же легко, как любой другой веб-контент. Благодаря богатому UI- и 3D-функционалу Qt Quick и Qt Quick 3D, а также их производительности, близкой к нативной, теперь легко создавать для веба решения, где требуются визуализация и интенсивная обработка данных.


Однако WebAssembly не похожа ни на одну из платформ с поддержкой Qt. Приложения запускаются в песочнице браузера, а значит, имеются ограничения на их доступ к локальному компьютеру или сервисам операционной системы. И они запускаются в среде, где требуется взаимодействие с самим браузером. В Qt мы пытаемся упростить эти особенности платформы — прозрачно, при её интеграции, а также через специальные API. С конкретными техническими требованиями можно ознакомиться на вебинаре по WebAssembly.


Это динамичная платформа, способная серьёзно повлиять на индустрию разработки приложений. Для наибольшей удовлетворённости конечных пользователей приложений на Qt, разработанных для WebAssembly, будем поддерживать эту платформу и постоянно дорабатывать и адаптировать Qt.


Новые и возвращённые модули


В ознакомительной версии Qt 6.4 (ТР) появились новые модули и возвращён один из тех, которые пока не были доступны пользователям Qt 6.


Стиль iOS для Qt Quick (TP)


Элементы управления Qt Quick в стиле iOS, в светлом режимеЭлементы управления Qt Quick в стиле iOS, в тёмном режиме

В пользовательских интерфейсах, разрабатываемых с элементами управления Qt Quick, для Windows и macOS автоматически применяется встроенная поддержка стилей, а для Android — стиль Material. Для Qt 6.4 мы добавили похожий на нативный стиль для приложений Qt Quick, запускаемых на iOS. Стилем iOS поддерживается тёмный и светлый режимы на платформах iOS. Кроме того, он может использоваться на macOS, а значит, упрощается создание прямо в среде разработки этой ОС пользовательских интерфейсов, оптимизированных для этого стиля.


HTTP-сервер Qt (TP)


С этим новым модулем проще добавлять HTTP-сервер к любому приложению на Qt. На сервере реализована частичная поддержка HTTP 1.1, а безопасность обеспечивается с помощью протокола защиты транспортного уровня. Однако сервер предназначен специально для доступа к данным в доверенной сети.


Моделирование физической среды в Qt Quick 3D (TP)


Физическая среда

Чтобы упростить создание 3D-сцен с естественным движением и взаимодействием объектов, мы интегрировали в Qt Quick 3D физическое моделирование, ведь делать такие сцены и анимацию вручную может быть весьма трудоёмко, но с Qt Quick API смоделировать физическую среду в любой 3D-сцене очень легко. Реализация основана на надёжном, хорошо протестированном и высокопроизводительном движке PhysX.


Текст в речь на Qt


В приложениях на Qt по умолчанию поддерживаются технологии для пользователей с ограниченными возможностями, такие как скрин-ридеры — программы чтения с экрана голосом. Во многих приложениях дополнительно может применяться преобразование текста в речь. С аудиоречевыми объявлениями событий или изменений информация может стать доступнее для любого пользователя, особенно когда внимание не приковано к экрану постоянно. Мы портировали на Qt 6 поддержку синтеза речи по тексту, которая отличается от модуля QtSpeech в Qt 5 лишь незначительными изменениями. В модуле поддерживаются самые разные синтезаторы речи по тексту на настольных, мобильных и встраиваемых платформах, и мы добавили QML API.


Новый функционал


Много изменений и в существующих модулях.


Qt Quick 3D


Шумоподавление в карте освещения

С поддержкой глобального освещения с предварительно сгенерированными световыми картами 3D-сцены, создаваемые при помощи различных источников света, реалистичнее. При этом затраты на производительность в рантайме минимальны. Этот функционал доступен в ранней ознакомительной версии, с нетерпением ждём ваших отзывов!


Кроме того, мы добавили в инструментарий линейные частицы, поддержку зеркально-глянцевых материалов, дополнительные параметры настройки для зондов отражения, скайбоксов, пользовательских материалов и текстур.


Представления элементов Qt Quick


Мы добавили функциональности типам TableView и TreeView в Qt Quick. Теперь пользователям доступна навигация с помощью клавиатуры, они могут выбирать строки и столбцы. У разработчиков приложений теперь больше контроля над позиционированием ячеек, анимацией, а также разворачиванием и сворачиванием узлов дерева.


Более плавная анимация в Qt Quick


Кроме доработок «под капотом», благодаря которым потоковым циклом отображения в Qt автоматически обрабатывается нарушенное регулирование вертикальной синхронизации, мы добавили новый тип анимации FrameAnimation, чтобы код запускался синхронно с кадрами анимации.



QQuickWidget с полной поддержкой RHI


С QQuickWidget можно создавать пользовательские интерфейсы приложений, в которых имеются элементы и Qt Quick, и Qt Widget. До сих пор для этого требовался OpenGL. Для Qt 6.4 мы полностью перепроектировали класс, и теперь QQuickWidget функционален не только с OpenGL, но и со всеми поддерживаемыми графическими API: Metal, Vulkan, Direct3D 11.


Безопасная работа с данными с QSslServer


С сетевым модулем Qt проще писать эффективные TCP-сервера, а с Qt 6.4 так же легко писать сервера, которые взаимодействуют по протоколу TLS.


Мультимедиа на Qt


Мы добавили бекенд мультимедиа на основе FFMPEG, с которым функциональность аудио и видео единобразна на всех платформах. Что касается воспроизведения видео, мы «допилили» обработку цветового пространства и поддержку HDR, а в приложениях теперь можно вставлять субтитры в QVideoFrames.


Новый функционал в ознакомительной версии — поддержка пространственного звучания. Теперь можно создавать звуковые сцены в 3D, где с помощью Qt эмулируется комната. В качестве звуковых характеристик используются её размеры, материал стен и пола, а также положение слушателя.


Новый полезный функционал виджетов Qt


С QFormLayout проще создавать графические интерфейсы для захвата структурированного пользовательского ввода, а QWizard — классическое решение в помощь пользователю для пошагового выполнения сложной задачи. Чтобы контролировать видимость строк в formlayout и переходить на любую страницу в мастере, мы добавили в Qt 6.4 API. И небольшое нововведение — дополнительная кнопка clear («Очистить») для QKeySequenceEdit — это полезно разработчикам сложных приложений с большим количеством клавиатурных сочетаний-команд.


QML


Доработана поддержка типов значений, а значит предоставить структурированные данные из C++ в QML теперь проще и это обходится не так дорого, как раньше. Типы значений и их списки можно использовать для свойств без накладных расходов обёрток QObject.


Что касается инструментария, можно обратиться к языковому серверу QML: там в вашей IDE с поддержкой QML предоставляется обратная связь в реальном времени. А с инструментом контроля качества кода QML теперь можно выявлять неэффективное или неправильное применение Qt Quick и Qt Quick Controls и генерировать предупреждения во время сборки.


QML Type Compiler теперь включён по умолчанию: можно компилировать больше QML-кода в код C++.


Много другой работы


В дополнение ко всему этому мы хорошо потрудились над упрощением работы со строковыми литералами в коде. В QStringEncoder и QStringDecoder теперь поддерживаются все кодеки с поддержкой ICU (пока в Qt поддерживается ICU). Доработана совместимость Qt классов даты и времени с std::chrono, и в Markdown при работе с QTextDocuments теперь поддерживаются входные и выходные данные.


Разработчикам, ориентированным на платформу Android, теперь проще вызывать Android API из C++, используя новые перегрузки вариативного шаблона различных методов QJniObject и QJniEnvironment.


Коммерческие дополнения


Если у вас коммерческая лицензия, загрузите Qt VNC Server в ознакомительной версии поверх Qt 6.4 и вы сможете делиться с VNC-совместимым клиентом любым приложением на Qt Quick.


QML Script Compiler — это часть коммерческих расширений Qt Quick Compiler Extensions, где с Qt 6.4 может генерироваться код C++ для операций со списками типов значений и доработанный код для преобразования типов.


Заглядывая вперёд


С Qt 6.4 появился новый функционал в ознакомительной версии. Следите за Qt для Python 6.4, полная поддержка Qt 6.4 будет в новых выпусках Qt Design Studio.


Qt 6.5 выйдет с долгосрочной поддержкой для коммерческих пользователей, акцент сделаем на стабилизации и доработке этого функционала по вашим отзывам. Кроме того, мы работаем над переносом Qt Location на Qt 6, дорабатываем поддержку тем для рабочего стола Windows 11 и Linux и продолжаем повышать производительность QML с помощью инструментов компилятора и дорабатывать поддержку типов значений.


Подробнее и о версиях после Qt 6.5 можно узнать в вебинаре о плане развития будущего Qt.


Спасибо


В заключение благодарю всех, кто помог создать Qt 6.4. Полный список авторов исходного кода Qt смотрите в конце примечаний к выпуску. А ещё спасибо всем, кто сообщал об ошибках, присылал отзывы и поддерживал в рабочем состоянии нашу инфраструктуру непрерывной интеграции.


Новый выпуск, как всегда, доступен в установщике Qt. Его также можно получить со страницы загрузки или вашей учётной записи Qt.


Поможем разобраться с Qt, чтобы вы прокачали карьеру или стали востребованным IT-специалистом:Чтобы посмотреть все курсы, кликните по баннеру:





Комментарии (0)