Релиз фреймворка Qt 5.15
26 мая 2020 года
Представлен релиз кроссплатформенного фреймворка Qt 5.15. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2. В декабре будет опубликована новая ветка Qt 6, в которой ожидаются значительные архитектурные изменения. Для сглаживания будущего перехода на ветку Qt 6 в Qt 5.15 включены предварительные реализации некоторых новшеств и добавлены предупреждения о скором прекращении поддержки функциональности, намеченной для удаления в Qt 6.
Qt 5.15 отнесён к выпускам с длительным сроком поддержки (LTS). При этом для сообщества обновления ветки 5.15 будут публиковаться только до формирования очередного значительного выпуска, т.е. примерно полгода. Расширенный LTS-цикл, подразумевающий формирование обновлений в течение трёх лет, будет ограничен пользователями с коммерческой лицензией (для обычных компаний - $5508 в год на одного разработчика, а для стартапов и малых предприятий - $499 в год). Компания Qt Company также рассматривала возможность перехода на модель распространения Qt, при которой все выпуски в течение первых 12 месяцев будут распространяться только для пользователей коммерческих лицензий. Но пока данная идея не ушла дальше обсуждения.
Основные новшества Qt 5.15:
- Продолжена работа по созданию абстрагированного графического API, не зависящего от 3D API операционной системы. Ключевым компонентом нового графического стека Qt является движок рендеринга сцен, использующий прослойку RHI (Rendering Hardware Interface) для обеспечения работы приложений Qt Quick не только с OpenGL, но и поверх API Vulkan, Metal и Direct 3D. В 5.15 новый графический стек предложен в форме опции, имеющей статус "Technology Preview".
- Обеспечена полная поддержка модуля Qt Quick 3D, с которого снят признак экспериментальной разработки. Qt Quick 3D предоставляет унифицированный API для создания интерфейсов пользователя на базе Qt Quick, сочетающих элементы 2D и 3D графики. Новый API позволяет использовать QML для определения 3D-элементов интерфейсов без задействования формата UIP. В Qt Quick 3D для 2D и 3D можно использовать один runtime (Qt Quick), один макет сцены и один анимационный фреймворк, а для визуальной разработки интерфейса применять Qt Design Studio. Модуль решает такие проблемы, как большие накладные расходы при интеграции QML с контентом из Qt 3D или 3D Studio, и предоставляет возможность синхронизации анимации и преобразований на уровне отдельных кадров между 2D и 3D.
Из добавленных в Qt Quick 3D новых возможностей упоминается поддержка эффектов постпроцессинга, C++ API для управления геометрией, API для вращения, основанный на классе QQuaternion, и поддержка точечных источников света. Для оценки различных возможностей Qt Quick 3D подготовлено специальное демонстрационное приложение, показывающее как можно изменять типы и источники освещения, использовать сложные модели, манипулировать текстурами, материалами и сглаживанием. Одновременно предложен выпуск окружения для проектирования интерфейса пользователя Qt Design Studio 1.5, в котором реализована полная поддержка Qt Quick 3D.
- В Qt QML работа была сосредоточена на подготовке к Qt 6. Реализована возможность применения в компонентах свойств с признаком 'required', установка которых обязательна. В утилите qmllint улучшено формирование предупреждений о возможных проблемах в QML-коде. Добавлена утилита qmlformat, упрощающая форматирование QML-кода в соответствии с рекомендациями по стилю кодирования. Обеспечена совместимость QML с редакцией Qt для микроконтроллеров.
- В Qt Quick в элемент Image добавлена поддержка цветовых пространств. В Qt Quick Shapes добавлен новый элемент PathText.В обработчик указателя добавлено свойство cursorShape, через которое можно изменить форму курсора мыши на настольных системах. Добавлен элемент HeaderView для упрощения добавления вертикальных и горизонтальных заголовков в таблицы на основе TableView.
- Значительно улучшена поддержка декорирования окон на стороне клиента (CSD), позволяющая приложению определить собственные элементы оформления окон и разместить произвольное содержимое в заголовке окна.
- Стабилизирован модуль Qt Lottie, предоставляющий расширенный API для QML, позволяющий отрисовывать графику и анимацию, экспортированную в формате JSON при помощи плагина Bodymovin к пакету Adobe After Effects. Благодаря QtLottie дизайнер может подготовить анимационные эффекты в удобном для себя приложении, а разработчик напрямую подключить экспортированные файлы к интерфейсу приложений на QtQuick. QtLottie включает в себя встроенный микродвижок для выполнения анимации, обрезки, обработки слоёв и других эффектов. Движок доступен через QML-элемент LottieAnimation, которым можно управлять из QML-кода по аналогии с любыми другими элементами QtQuick.
- Браузерный движок Qt WebEngine обновлён до кодовой базы Chromium 80 (в ветке 5.14 использовался Chromium 77, актуальной версией является Chromium 83).
- В модуле Qt 3D улучшены средства профилирования и отладки.
- В Qt Multimedia добавлена поддержка отрисовки в несколько поверхностей.
- В Qt GUI операции масштабирования и преобразования изображений теперь во многих случаях выполняются в многопоточном режиме.
- В Qt Network добавлена поддержка настраиваемых таймаутов и сессионных ярлыков в TLS 1.3 (Session Ticket, позволяют возобновить сеанс без сохранения состояния на стороне сервера).
- Обеспечена возможность работы Qt Core, QRunnable и QThreadPool с std::function. Добавлен новый метод QFile::moveToTrash() для перемещения элементов в корзину с учётом специфики разных платформ.
- В Qt для Android добавлена поддержка родных диалогов для открытия и сохранения файлов.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.