
Qt 6.10 прибывает Множество улучшений для разработчиков приложений и сборщиков устройств, включая новые функции: от доступности и дизайна интерфейса до аудио, графики и поддержки платформ. Это версия, которая облегчает повседневную жизнь. независимо от того, работаете ли вы в QML и Qt Quick или продолжаете работать с C++ и Qt Widgets.
Помимо заголовков, есть изменения, которые напрямую влияют на производительность: система компоновки на основе Flexbox в Qt Quick, расширенная векторная анимация (SVG и Lottie), новые элементы управления, такие как SearchField, и гораздо более понятные способы подключения данных C++ к интерфейсам QML. Также есть достижения в Android, macOS/iOS, Windows и Linux.и немало небольших интересных деталей в таких модулях, как Qt Graphs, Qt Quick 3D, Qt Multimedia или Qt Core.
Доступность и высокая контрастность в Qt 6.10
Доступность делает значительный скачок: Встроенные стили Qt теперь учитывают Автоматически настраивает параметры высокой контрастности системы на настольных компьютерах и мобильных устройствах. Это помогает поддерживать визуальное соответствие с остальной частью окружающей среды и соблюдать нормативные требования без дополнительных усилий.
Был пересмотрен способ взаимодействия виджетов Qt и элементов управления Qt Quick со вспомогательными технологиями (например, программами чтения с экрана). лучшая интеграция с базовыми платформамиПрогресс особенно заметен в WebAssembly, и многие из этих улучшений также появятся в ветках LTS в предстоящих обновлениях обслуживания.
Qt 6.10 создает интерфейсы быстрее
Qt Quick продолжает развиваться, стремясь к ускорению итераций, сокращению пользовательского кода и созданию современных, адаптивных пользовательских интерфейсов. В версии 6.10 впервые представлен новый макет Flexbox, расширена поддержка векторной анимации и появляется готовый к использованию элемент управления SearchField.
Flexbox-макет для Qt Quick
FlexboxLayout включен в качестве «технического предварительного просмотра», системы, вдохновленной Flexible Box Layout CSS, которая интегрируется с механизмом макета Qt Quick (включая прикрепленные свойства для настроить поведение каждого элемента). Он предназначен для создания адаптивных интерфейсов за считанные минуты и поддержания стабильной производительности во время выполнения.
Qt уже предлагает несколько макетов для адаптивных интерфейсов, но с FlexboxLayout проще адаптироваться к различным размерам экрана/соотношениям и уменьшить вариации длины текста из-за предпочтений в области интернационализации или типографики.
Анимированная векторная графика: SVG и Лотти
После нескольких версий, усиливающих поддержку векторной графики (Qt Quick Scene Graph, Qt Quick Shapes и улучшение SVG), в версии 6.10 добавлена поддержка векторной анимации как в изображениях SVG, так и в Lottie. Модуль Qt Lottie расширяет диапазон поддерживаемых современных файлов, а благодаря VectorImage можно визуализировать Lottie как масштабируемый векторный объект с аппаратным ускорением.
Кроме того, встроен инструмент lottietoqml для преобразования файлов Lottie в Qt Быстрые сцены непосредственно в QML, дополняя поток, созданный svgtoqml.
Новый элемент управления Qt Quick: SearchField
SearchField — это специализированное поле ввода для поиска со встроенными стилями и нативный внешний вид на основных платформах. Он отображает соответствующие предложения в отфильтрованном раскрывающемся списке по мере ввода текста и использует модели, которые вы можете предоставить через стандартные пути передачи данных QML.
Эта часть особенно хорошо вписывается в улучшения обмена данными между кодом C++ и пользовательскими интерфейсами Qt Quick: новая функция в версии 6.10 делает проще подключать модели C++ с элементами управления типа SearchField, не прибегая к сложным шаблонам.
Интегрируйте свои данные в QML с меньшими трудностями благодаря Qt 6.10
Qt предлагает несколько механизмов для связывания логики C++ с представлением QML (синглтоны, QAbstractItemModel, свойства контекста, объекты QObject и т. д.), а также такие инструменты, как Qt Creator 8. Тем не менее, создание полной двусторонней интеграции может потребовать слишком много повторяющегося кодаВ Qt 6.10 этот барьер снижен благодаря новым API и типам, разработанным для реальной работы.
QRangeModel
Появляется QRangeModel, облегченная реализация QAbstractItemModel для представления диапазонов C++ в виде std::vector, std::array или любой итерируемый контейнер непосредственно в представления в Widgets и QML/Qt Quick. Он работает с простыми значениями (например, int) и более сложными типами (Q_GADGET или std::tuple), генерируя соответствующие роли без необходимости писать модель вручную.
Если вы используете гаджеты, QRangeModel представляет каждое свойство как именованную роль, так что делегаты QML могут ссылка с требуемыми свойствами типизированным способом. На практике это устраняет необходимость в ручном управлении ролями или злоупотреблении свойствами контекста, и всё согласуется с скомпилированным QML.
delegateModelAccess: прямая запись от делегата
До сих пор для записи в модель из делегата обычно требовался объект модели или использовались свойства контекста. В версии 6.10 просто активируйте delegateModelAccess в режиме ReadWrite чтобы делегаты могли естественным образом записывать требуемые свойства.
Новая возможность работает во всех представлениях Qt: Instantiator, Repeater, ListView, GridView, TableView, TreeView, MapItemView и Repeater3D. Создание редактируемых пользовательских интерфейсов Это делает его более предсказуемым и соответствующим хорошей практике QML.
Синхронизатор: синхронизация нескольких объектов недвижимости
Давно ожидаемый элемент Synchronizer дебютирует, чтобы гарантировать, что несколько объектов недвижимости имеют одинаковую ценность По возможности, не нарушая при этом никаких связей ни в одном из них. Раньше привязки объединялись с обработчиком сигналов, и это лучше всего работало для элементов управления, реализованных на C++.
С помощью Синхронизатора все сводится к одному элементу, который поддерживает n свойств и совместим как с C++, так и с QML. Он доступен в модуле Qt.labs.synchronizer и доступен в виде технической версии (Tech Preview).
TreeModel в QML
Раньше для представления данных о дереве в Qt Quick требовалась реализация QAbstractItemModel. QRangeModel упрощает этот процесс по сравнению с C++, но иногда требуется объявить дерево непосредственно в QML Для прототипов или небольших наборов данных здесь как раз и пригодится тип QML TreeModel.
С помощью TreeModel вы определяете узлы с помощью синтаксиса массива и словаря в стиле JSON, назначаете пары «ключ-значение» каждому элементу и используете их в представлениях, таких как TreeView, без написания сложной инфраструктуры. Позволяет вам итерировать пользовательский интерфейс на высокой скорости перед переносом структуры на C++, если это необходимо.
SortFilterProxyModel в QML
Что касается C++, мы уже много лет используем QSortFilterProxyModel. В Qt 6.10 появился его декларативный аналог в QML для сортировка и фильтрация данных с API, поддерживающим связывание. Он включает в себя сортировщики на основе ролей (например, RoleSorter) и фильтры реактивных функций (которые можно переопределить) для поддержания актуальности списков и таблиц.
Идея заключается в том, что вы можете создавать конвейеры сортировки и фильтрации непосредственно в QML, используя лаконичный и выразительный код, не жертвуя производительностью или ясностью.
Поддерживайте актуальность своего продукта с помощью Qt 6.10
Системы развиваются, и пользователи ожидают, что их приложения будут работать на самых последних устройствах и версиях. В версии 6.10 Захватывающие улучшения платформы которые способствуют этой преемственности, как показывают проекты, основанные на Qt, такие как LXQt 2.0.
Android: Текущая поддержка и новые инструменты
В Qt 6.10 объявлена официальная поддержка Android 15 и 16, включая улучшенную систему сборки и поддержку страниц размером 16 КБ. Это позволяет целевое текущее оборудование без каких-либо сюрпризов, сохраняя стабильность и производительность.
Дебютирует Qt Jenny 1.0 — генератор кода, создающий JNI-склеивающие компоненты из аннотированных классов Java. Он состоит из компилятора и процессора аннотаций, генерирующих API Qt C++ на основе QJniObject для доступа к нативным сервисам, таким как BatteryManager, PowerManager и AudioManager. даже упрощает уведомления, которые часто сложны в использовании JNI. Он доступен на Maven Central и поставляется с примерами в Qt Creator и онлайн-документацией.
Обработка заставки также была улучшена с Android 12, что позволило избежать двойные приветственные экраныРекомендуемый подход — использовать выделенный SplashActivity, устанавливать темы с полупрозрачностью и запускать Qt Activity, когда Android будет готов, обеспечивая плавный переход.
macOS и iOS 26
Первый небольшой релиз после выхода macOS 26 «Tahoe». Новый дизайн Liquid Glass и изменения в архитектуре рендеринга создали проблемы, которые Qt решил. предложить полную поддержкуМногие улучшения будут перенесены в ветки LTS (6.8 и 6.5) в предстоящих патчах.
Windows: Qt WebView с WebView2
Qt WebView включает реализацию на базе WebView2, позволяющую использовать Microsoft Edge в качестве движка. Таким образом, вы можете встраивать веб-контент с помощью собственного браузера системы и развертывать в Windows без необходимости перетаскивания Qt WebEngine, что позволяет сократить объем занимаемого пространства.
Linux и мультимедиа
Qt Multimedia добавляет собственный бэкэнд для PipeWire с улучшенными задержками и контролем обработки контента и оборудования (например, такие приложения, как Mixxx 2.5), в дополнении к более тонкая поддержка в контейнерных средахКомпенсация высоты тона звука добавлена для сохранения качества при ускорении или замедлении треков.
Встроенное оборудование
На устройствах Boot to Qt использует Yocto 5.2 «Walnascar» и отображается Адаптации для азотных пластин EzurioЦель: ускорить вывод на рынок современного оборудования с обновленными стеками.
Другие заметные улучшения в Qt 6.10
Qt Quick 3D теперь позволяет С легкостью запекайте карты освещения для повышения качества за счет высокой производительности и запуска эффектов частиц в обратном порядке, что полезно для имитации воздействия дождя или снега на ваши модели.
Qt Graphs добавляет новую заполненную поверхность, улучшенную поддержку многоосевых функций, настраиваемый 2D z-порядок и возможность визуализировать фрагмент 3D-графики Изображение для печати. В каталог также добавлена новая графика с заливкой.
В Qt Widgets создайте пользовательские делегаты Это проще и обеспечивает более точное управление перетаскиванием элементов в представлениях. Макеты позволяют индивидуально настраивать ограничения по размеру.
Виртуальная клавиатура теперь включает в себя Латвийская дистрибуция, расширяя языковой охват. В Qt Core API были улучшены для работы с локалями, XML-документами и строками продолжения.
В Qt GUI бэкэнд QRhi добавляет перечисление 3D-адаптеров при использовании Direct3D 11/12 или Vulkan, что упрощает выбор графических процессоров на машинах с несколькими видеокартами.
Были введены улучшения производительности в QGrpcHttp2Channel, который предоставляет преимущества приложениям, использующим gRPC через HTTP/2 в требовательных сценариях.
Подробнее о Qt 6.10
Уэйланд получает управление сеансом, ключевой компонент для современных интеграций рабочего стола, а также полезные графические уведомления о сбросе для таких компонентов, как композиторы (например, KWin).
Qt WebEngine включает поддержку Расширения Chromium, что является давним спросом пользователей браузеров на базе QtWebEngine. Это открывает возможность для таких проектов, как Falkon, использовать ту же экосистему расширений, что и в Chromium.
В дополнение к прямой поддержке Lottie в VectorImage, инструмент lottietoqml упрощает Добавьте анимацию в мир QML, расширив свой творческий арсенал без ущерба для производительности.
Qt 6.10 — это важный шаг на пути к разработке более доступных и современных интерфейсов, интеграции данных C++ в QML с меньшими трудностями и беспроблемного развертывания на новейших платформах — и все это с добавлением практичных мультимедиа, графики и основных функций, которые отражаются как на производительности, так и на качестве конечного продукта. Если в вашем стеке есть Qt, это обновление заслуживает места в вашем плане действий.