Digia, которая теперь развивает Qt, анонсировала новую версию фреймворка Qt 5.0. Весной будет выпущено обновление до Qt 5.1, в которое войдут некоторые элементы, не вошедшие в пятый релиз: Qt 3D и Qt Sensors. Тогда же появятся и версии для Android и iOS. После этого все серьезные обновления будут выпускаться два раза в год.
Qt 5 отличается модульной структурой и смещением акцента в сторону использования для написания приложений средств декларативного описания интерфейса с определением логики взаимодействия с пользователем на языке JavaScript, в то время как применение C++ позиционируется для реализации критичных ко времени выполнения или излишне сложных частей программы, а также для создания новых модульных бэкендов для Qt Quick.
Qt 5 обладает совместимостью с предыдущими релизами, поддерживает средства для создания программ на С++ и почти все компоненты четвертой версии.
Среди основных особенностей Qt 5 нужно отметить модульную структуру репозитория. При грамотном разбиении фреймворка на модули, отдельные группы разработчиков могут практически независимо работать над своими подпроектами. Они будут обновляться и поставляться независимо от других частей Qt.
Все порты переведены на использование уровня абстракции Qt Platform Abstraction layer. QPA упрощает перенос Qt на новые оконные системы и устройства. Полностью поддерживаются X11/Linux, Windows, Mac OS X, Embedded Linux и Windows Embedded, но уже написаны бэкенды для iOS и Android.
В Qt 5 изменена архитектура графического стека и увеличена производительность графики. Центральным элементом стал QML Scenegraph, который работает поверх OpenGL. Для совместимости с новой архитектурой система должна поддерживать минимум OpenGL (ES) 2.0.
Сохранена поддержка QPainter для выполнения расширенных функций, однако ограничена возможностью использования бэкенда программной растеризации вывода (Raster), бэкенда OpenGL и бэкенда для вывода на печать и создания PDF.
В QtGui добавлен набор классов QOpenGL, заменивших собой устаревшие классы QGL. Последние оставлены для обеспечения совместимости. Также в наличии класс QGuiApplication, которые заметно легче QApplication и QWindow при выполнении задач обработки корневой области на экране.
В Qt 5 все возможности, связанные с QWidget, выделены в отдельную библиотеку. Данная мера направлена на сохранение чистоты архитектуры Qt 5. Дело в том, что QWidget важны для существующих приложений, но тенденция в разработке приведет к тому, что все пользовательские интерфейсы будут реализовываться на QML и Qt Quick.
Реализация Qt Quick 2 разделена на отдельные модули, связанные с графикой и поддержкой языков QML и JavaScript.
В состав Qt Core включен парсер формата JSON и оптимизированное для более высокой скорости обработки бинарное представление для данных JSON. Появилась поддержка определения MIME-типа как по расширению, так и по содержимому. Кроме того, добавлен движок для обработки регулярных выражений, полностью совместимых с Perl, а также поддержка стандарта C++11. Возможность сборки при помощи совместимых с C++98 компиляторов сохранилась.
В состав фреймворка вошли построитель интерфейса Qt Designer, инструмент для локализаций Qt Linguist и интегрированная среда разработки Qt Creator. Ранее они были отдельными проектами.
Источник: Opennet