Qt 6.0 перешёл на стадию бета-тестирования
20 октября 2020 года
Компания Qt Company опубликовала первый бета-выпуск ветки Qt 6 (Архивная копия от 4 декабря 2020 на Wayback Machine), которая включает значительные архитектурные изменения, а для сборки требуется компилятор, поддерживающий стандарт C++17. Релиз намечен на 1 декабря 2020 года.
Ключевые особенности Qt 6:
- Абстрагированный графический API, не зависящий от 3D API операционной системы. Ключевым компонентом нового графического стека Qt является движок рендеринга сцен, использующий прослойку RHI (Rendering Hardware Interface) для обеспечения работы приложений Qt Quick не только с OpenGL, но и поверх API Vulkan, Metal и Direct 3D.
- Модуль Qt Quick 3D с API для создания интерфейсов пользователя на базе Qt Quick, сочетающих элементы 2D и 3D графики. Qt Quick 3D позволяет использовать QML для определения 3D-элементов интерфейсов без задействования формата UIP. В Qt Quick 3D для 2D и 3D можно использовать один runtime (Qt Quick), один макет сцены и один анимационный фреймворк, а для визуальной разработки интерфейса применять Qt Design Studio. Модуль решает такие проблемы, как большие накладные расходы при интеграции QML с контентом из Qt 3D или 3D Studio, и предоставляет возможность синхронизации анимации и преобразований на уровне отдельных кадров между 2D и 3D.
- Реструктуризация кодовой базы с разбиением на более мелкие составные части и сокращением размера базового продукта. Инструменты для разработчиков и специализированные компоненты будут поставляться в виде дополнений, распространяемых через каталог-магазин Qt Marketplace.
- Существенная модернизация QML:
- Поддержка строгой типизации.
- Возможность компиляции QML в представление на C++ и машинный код.
- Перевод полной поддержки JavaScript в разряд опций (использование полнофункционального JavaScript-движка требует больших ресурсов, что мешает применению QML на таком оборудовании, как микроконтроллеры).
- Отказ от версионирования в QML.
- Унификация структур данных, дублирующихся в QObject и QML (позволит сократить потребление памяти и ускорить запуск).
- Уход от генерации структур данных во время выполнения в пользу генерации во время компиляции.
- Скрытие внутренних компонентов через использование приватных методов и свойств.
- Улучшенная интеграция с инструментами разработки для рефакторинга и диагностики ошибок во время компиляции.
- Добавление инструментов для обработки связанных с графикой ресурсов на этапе компиляции, например, для преобразования PNG-изображений в сжатые текстуры или для конвертации шейдеров и мешей в оптимизированные бинарные форматы для конкретного оборудования.
- Встраивание унифицированного движка для тем оформления и стилей, позволяющего добиться внешнего вида приложений на базе Qt Widgets и Qt Quick, родного для разных мобильных и настольных платформ.
- В качестве системы сборки решено использовать CMake вместо QMake. Поддержка сборки приложений при помощи QMake будет сохранена, но сам Qt будет собираться с использованием CMake. CMake выбран, так как данный инструментарий получил широкое распространение в среде разработчиков проектов на C++ и поддерживается во многих интегрированных средах разработки. Разработка сборочной системы Qbs, которая претендовала на роль замены QMake, продолжена сообществом.
- Переход при разработке на стандарт C++17 (ранее использовался C++98, а с Qt 5.7 — C++11). В Qt 6 планируют реализовать поддержку многих современных возможностей C++, но без потери обратной совместимости с кодом на основе прошлых стандартов.
- Возможность использования в коде на C++ некоторой функциональности, предлагаемой для QML и Qt Quick. В том числе будет представлена новая система свойств для QObject и подобных классов. Из QML в ядро Qt будет интегрирован движок для работы с привязками (binding), что позволит снизить нагрузку и потребление памяти для биндингов и сделать их доступными для всех частей Qt, а не только для Qt Quick.
- Расширение поддержки дополнительных языков, таких как Python и WebAssembly.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.