Релиз фреймворка Qt 5.15

Представлен релиз кроссплатформенного фреймворка 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 операционной системы, и переходу на новый движок рендеринга сцен, использующий прослойку 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).
  • В модуле Qt 3D улучшены средства профилирования и отладки.
  • В Qt Multimedia добавлена поддержка отрисовки в несколько поверхностей. В Qt GUI операции масштабирования и преобразования изображений теперь во многих случаях выполняются в многопоточном режиме.
  • В Qt Network добавлена поддержка настраиваемых таймаутов и сессионных ярлыков в TLS 1.3 (Session Ticket, позволяют возобновить сеанс без сохранения состояния на стороне сервера).
  • Обеспечена возможность совместной работы Qt Core, QRunnable и QThreadPool с std::function. Добавлен новый метод QFile::moveToTrash() для перемещения элементов в корзину с учётом специфики разных платформ.
  • В Qt для Android [[https://www.qt.io/blog/whats-new-with-qt-for-android добавлена
  • поддержка родных диалогов для открытия и сохранения файлов.

Источник: http://www.opennet.ru/opennews/art.shtml?num=53031