LINUX.ORG.RU

Qt 5.9 LTS

 


1

4

Qt 5.9 — это первый релиз после 5.6 с длительным сроком поддержки. Новая версия Qt, по словам разработчиков, одна из самых значимых за всё время и содержит большое количество как новых функций, так и улучшений производительности и стабильности.

Исправлено свыше 2000 ошибок, кодовая база полностью переведена на C++11, переписана система конфигурации на основе Qt Lite, реализована новая графическая подсистема, улучшен модуль в Qt Quick Controls, добавлен IPC-интерфейс для управления Qt-объектами в других процессах, проделана огромная работа в Qt 3D.

Разработчики объявляют о 3-летнем сроке поддержки для Qt 5.9 и рекомендуют начинать новые проекты, для которых важна стабильность и частота выхода обновлений, именно на этой версии.

Qt Lite — это новая система конфигурации Qt на этапе сборки, анонсированная в Qt 5.8. Она позволяет уменьшить размер дистрибутива программы, что особенно критично для встраиваемых систем. Qt Lite предоставляет дерево зависимостей из сотен опций конфигурации для разных модулей, которые можно отключать при отсутствии необходимости в целевой программе. В качестве примера приводится размер стандартной игры Samegame, идущей в комплекте с исходным кодом:

  • Qt 5.6 Dynamic: 24.5 МиБ;
  • Qt 5.6 Static: 13.8 МиБ;
  • Qt 5.9 Lite Static: 5.4 МиБ.

Существенные улучшения производительности коснулись QML:

  • В качестве альтернативы проприетарному компилятору из QML в C++ представлен QML-кеш, который позволяет транслировать скрипт QML в байт-код на лету, сохраняя его в файлы .qmlc, загружающиеся автоматически при следующем старте программы. Кеш также можно сформировать на этапе сборки или вообще от него отказаться. В некоторых случаях тесты показывают более чем двукратный прирост скорости загрузки приложения по сравнению с обычным текстовым парсером.
  • Добавлен облегчённый набор Quick Controls 2, дающий коллосальный прирост производительности по сравнению с набором Quick Controls 1, который был переусложнён гибкой поддержкой смены стилей на лету, на практике редко использующейся.
  • По схожему принципу с сохранением скомпилированного шейдера на диск для ускорения последующего старта реализовано кеширование шейдеров. Для этого используется расширение GL_ARB_get_program_binary. По результатам тестов, прирост скорости загрузки при повторном запуске составляет до 700 %.

Qt Core

  • Добавлен тип qfloat16.
  • Добавлен класс QOperatingSystemVersion для проверки версии ОС.
  • QRegularExpression теперь зависит от библиотеки PCRE2.
  • QProcessEnvironment теперь также работает в iOS, tvOS, watchOS и VxWorks.

Qt GUI

  • GL-бекенд QPainter теперь работает с core-профилями OpenGL.
  • Добавлен метод QImage::reinterpretAsFormat, позволяющий интерпретировать данные изображения в другом формате без копирования.
  • Compute-шейдеры теперь поддерживаются в QOpenGLShader и QOpenGLShaderProgram, а также в OpenGL ES 3.1+.
  • При использовании FreeType теперь используются затемнение (stem-darkening) и гамма-коррекция для шрифтов OpenType.

Qt QML

  • Добавлена генерация ahead-of-time кеша QML.
  • Переписан сборщик мусора для большей производительности и меньшего потребления памяти при работе с JavaScript.

Qt Quick

  • Шейдеры OpenGL теперь сохраняются на диск для ускорения повторного старта.
  • Добавлен бекенд OpenVG.
  • Ассоциацию между окном и экраном теперь можно задать прямо из QML с помощью Window.screen и Qt.application.screens.
  • Добавлена возможность узнать шрифт, который в действительности используется при рисовании элемента Text.
  • Добавлена возможность использовать общую память для изображений между процессами с помощью image provider.

Qt Quick Controls 2

  • Добавлены элементы DelayButton и ScrollView.
  • Добавлена поддержка multi-touch для кнопок и слайдеров.
  • ComboBox теперь можно редактировать.
  • Drawer теперь может быть неинтерактивным.
  • Значения Slider, RangeSlider и Dial теперь обновляются на лету по умолчанию (устранена регрессия после Quick Controls 1).
  • Slider, Dial и ScrollBar теперь реагируют на нажатия мыши без задержки.
  • Добавлены сигналы для пользовательского взаимодействия: AbstractButton::toggled(), Slider::moved(), SpinBox::valueModified() и т. п.
  • Добавлена пошаговая прокрутка в ScrollBar.
  • SwipeDelegate теперь позволяет выключать и отключать жесты.
  • Добавлена возможность вертикального отображения SwipeView.

Qt WebEngine

  • Бекенд обновлён до Chromium 56.
  • Теперь используется система сборки GN из Chromium.
  • Добавлен API для загрузки HTTP POST.
  • В QQuickWebEngineProfiles реализована возможность исполнения пользовательских скриптов, теперь можно получить доступ к QQuickWebEngineUserScripts из C++.
  • В DownloadItems теперь есть причина в случае ошибки или прерывания загрузки.

Qt SerialBus

  • В QCanBusFrame добавлены флаги CAN FD Bitrate Switch (BRS) и Error State Indicator (ESI).
  • Добавлен класс QCanBusDeviceInfo для получения информации о доступных CAN-интерфейсах.
  • На Windows добавлен плагин для поддержки SYS-TEC electronic CAN-адаптеров.

Qt Location

  • Добавлена поддержка наклона и поворота карт с возможностью жестов multi-touch, задания угла обзора камеры.
  • Улучшено складирование элементов на карте.
  • Улучшена работа с копирайтами элементов.
  • Добавлена поддержка рисования карты не только с помощью тайлов, но и самим плагином.
  • Добавлен плагин MapboxGL на основе движка mapbox-gl-native.
  • Добавлен режим масштабировая карты fitViewportToVisibleMapItems.
  • Добавлен элемент MapItemGroup для группировки объектов на карте в отдельном QML-файле.
  • Добавлен элемент MapParameter для передачи параметров в плагин.
  • Оптимизировано рисование с помощью тайлов низкого разрешения, пока загружается более детализированный тайл.
  • Приложения на iOS теперь могут использовать QtPositioning в фоне.
  • Добавлен geoservice-плагин itemsoverlay с пустой картой, позволяющий только показывать элементы.

Qt Multimedia

  • Добавлены следующие параметры в QML: CameraCapture.supportedResolutions, CameraFlash.supportedModes, MediaPlayer.notifyInterval (также для Audio и Video), Video.loops.

Qt Network

  • В QNetworkAccessManager добавлена поддержка HSTS (HTTP Strict Transport Security).
  • Также в QNetworkAccessManager добавлены политики перенаправления (ManulRedirectsPolicy, NoLessSafeRedirectsPolicy, SameOriginRedirectsPolicy, UserVerifiedRedirectsPolicy).

Qt NFC

  • Теперь можно использовать NFC в сервисах на Android.
  • Добавлено взаимодействие с картами ISO-DEP, NFC-A, NFC-B, NFC-F и NFC-V.

Qt WebSockets

  • Добавлена возможность использовать внешний QTcpSocket.

Qt Charts

  • Добавлена мелкая сетка для логарифмических координат.
  • Добавлена поддержка различных фигур в обозначениях.
  • Добавлена поддержа более одного столбика в графике.

Qt 3D

  • Приложения на Qt Quick 2 теперь можно рендерить во внеэкранный буфер и использовать в 3D-сценах в виде текстуры.
  • Представлен прототип подсистемы анимации с вожностями неблокирующей покадровой отрисовки в отдельном потоке и импортированием из Blender.
  • Добавлен материал Physics Based Rendering (PBR) в модуле Qt3DExtras.
  • Добавлена поддержка 3D-текста в Qt3DExtras.
  • Компонент Level of Detail теперь позволяет переключать детализацию объектов сцены в зависимости от проекции и дальности камеры.
  • Компонент Mesh теперь основан на плагинах с поддержкой следующих форматов из коробки: Wavefront OBJ, PLY и FBX.
  • Текстурированный 2D-текст теперь основан на технологии Distance field, позволяющей избавиться от «лесенки» при большом приближении.

Qt Virtual Keyboard

  • Добавлена поддержка обработчиков переключения между физическими клавиатурами.
  • Теперь Сaps Lock активируется только при двойном нажатии на клавишу Shift.
  • Добавлена поддержка внешних раскладок клавиатуры, дополняющих встроеные раскладки.
  • Добавлено выпадающее окно для быстрого выбора языка ввода.
  • Добавлено автоматическое дополнение набираемого слова, если найден только один вариант в подсказках.
  • Список слов-кандидатов теперь автоматически скрывается, если неактивен.
  • Добавлен полноэкранный режим запуска.

Встраиваемые платформы

  • Добавлена экспериментальная поддержка DRM Dumb-Buffer в linuxfb, необходимая для устройств, не поддерживающих устаревшую модель fbdev (или имеющих проблемы с её эмуляцией).
  • Плагин evdevtouch теперm поддерживает фильтрацию и предсказание событий сенсорных экранов.

Qt Bluetooth

  • Добавлена поддержка классического Bluetooth в WinRT.
  • Добавлена поддержка Android Peripheral.

>>> Анонс CTO Qt Company Ларса Нолла (Lars Knoll)

★★★★★

Проверено: Aceler ()
Последнее исправление: sudopacman (всего исправлений: 11)

Я правильно понимаю, что Qt Lite — это файлы configure.json, раскиданные по директориям исходников? А есть какое-нибудь описание опций?

fluorite ★★★★★
()

Спасибо за новость.

Интересен Qt Lite и его статическая линковка.

EXL ★★★★★
()

Хорошая новость! Спасибо.

Twissel ★★★★★
()

Qt 3D

Скоро Qt станет вообще универсальным ответом на любой вопрос типа «А какую либу использовать чтобы...»

MimisGotAPlan
()
Ответ на: комментарий от fluorite

Доки по qt lite пока нету, насколько я знаю. Да и GUI конфигуратор только за деньги.

RazrFalcon ★★★★★
()

Qt Lite

Оно стало быть статическое? И всплывают те самые проблемы лицензии? В любом случае это хорошо, особенно для «мобильных приложений».

Ну а мне динамической линковки всегда хватало, архив Qt 5.7/.8 сжимался у меня до 17 мегабайт, нормально.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от fluorite

Всё, нашёл. Тулза есть только для коммерческих юзеров продукта Embedded Devices, для пользователей «десктоп && мобайл» нету.

fluorite ★★★★★
()
Ответ на: комментарий от MimisGotAPlan

Нейросети каким боком к UI или I/O? Библиотеки для расчёта курятников в Qt тоже нет и не предвидится :-)

Aceler ★★★★★
()

У этого пользователя в статусе написано, что он корректор. Почему тогда он пишет так ужасно и безграмотно?

sudopacman ★★★★★
()
Ответ на: комментарий от Aceler

А никто никуда и не спешит. Уже сейчас Qt представляет из себя конгломерат библиотек, которые позволяют выполнить практически любую прикладную задачу не выходя за пределы Qt.

MimisGotAPlan
()

Столько всяких компонентов Qt перечислено. Жалко, что 80% из них не используются ни в одной программе под линуксом. А тупо интерфейс рисуют через QtGUI.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от MimisGotAPlan

Скоро Qt станет вообще универсальным ответом на любой вопрос типа «А какую либу использовать чтобы...»

А никто никуда и не спешит.

Так «скоро» или «не спешит»? Как быстро ты начал противоречить сам себе.

Уже сейчас Qt представляет из себя конгломерат библиотек, которые позволяют выполнить практически любую прикладную задачу не выходя за пределы Qt

Ещё в четвёртой версии он это представлял.

Aceler ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Жалко, что 80% из них не используются ни в одной программе под линуксом.

Ну фигню-то не надо писать.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

противоречить

Где противоречие? Скоро станет, да. Но я, например, никуда не спешу. И авторы Qt никуда не спешат. Но Qt скоро станет. В чём проблема?

Ещё в четвёртой версии он это представлял.

И как это противоречит утверждению, что текущая версия это из себя представляет?

MimisGotAPlan
()
Ответ на: комментарий от ZenitharChampion

Жалко, что 80% из них не используются ни в одной программе под линуксом. А тупо интерфейс рисуют через QtGUI.

Кроме того, некоторыми из «модулей» невозможно пользоваться вообще, т.к. они кривые что ппц. Например, сильно был огорчен с QtCharts (повторять буду это каждый раз). Ну вот, не понимаю, зачем его релизили, если оно ну «скажем мягче», полное УГ. Не советую никому, если нужно отображать данные в «реальном времени», т.к. оно тормозит жутко, жрет память (с мем-ликами), входит в ступор, не кастомизабельно и прочее. Лучше берите сразу Qwt (жаль только что нет врапперов для QML для него).

kuzulis ★★
()
Ответ на: комментарий от MimisGotAPlan

Скоро станет, да.

Скоро станет платформой для всего? Завязывай.

Aceler ★★★★★
()
Ответ на: комментарий от kuzulis

Я пробовал, кстати. Таки да, быстрее оказалось взять webkit и рисовать графики через javascript.

Но код открыт, пиши, исправляй :-)

Aceler ★★★★★
()
Ответ на: комментарий от kuzulis

сильно был огорчен с QtCharts

У меня вот такие же эмоции вызывает ихний Qt Gamepad. И не туда и не сюда, на хеллоу ворлд сгодится, а для чего-то более серьёзного использовать себе дороже.

Dendy ★★★★★
() автор топика

В DownloadItems теперь есть причину в случае прерывания загрузки или ошибки.

Зачем есть причину?

Karrham
()
Ответ на: комментарий от Aceler

Но код открыт, пиши, исправляй :-)

Но это если есть свободное время и желание ковыряться. :) Но обычно сроки поджимают и нужно по-быстрому использовать то, что проверено временем.

kuzulis ★★
()

Товарищи. Кто ведет разработку чего нибудь серьезного под андроид на qt, поделитесь впечатлениями. Нормально оно или все таки лучше стандартный sdk.

rumgot ★★★★★
()
Ответ на: комментарий от rumgot

Ну оочень медленная заливка/отладка под Android... Может быть быстрее будет за то-же время выучить Java и использовать SDK. :)

Но в общих чертах, если нужно что-то более-менее простенькое по-быстрому сварганить - то тут Qt годится для Android.

ИМХО, тут нет конкретного ответа, все зависит от ситуации (как повезет в общем).

kuzulis ★★
()
Ответ на: комментарий от rumgot

все таки лучше стандартный sdk.

Ну само собой. Количество приложений в том же маркете на Qt сколько?

EXL ★★★★★
()
Ответ на: комментарий от Dendy

У меня вот такие же эмоции вызывает ихний Qt Gamepad. И не туда и не сюда, на хеллоу ворлд сгодится, а для чего-то более серьёзного использовать себе дороже.

Ну да, такое впечатление что клепают «для галочки», «абы зарелизить что-нить по-быстрому»... Скорее всего у них вообще не хватает ресурсов на все что они нарелизили.

kuzulis ★★
()

если линуксовый фреймворк вызывает такие противоречивые оценки, значит он жив

kto_tama ★★★★★
()
Ответ на: комментарий от rumgot

Если только андроид, лучше стандартный NDK. Если кроссплатформенная разработка, выбора нет, только Qt, только хардкор.

Aceler ★★★★★
()

А архитектуру уже осилили довести до ума?

cvv ★★★★★
()

GL-бекенд QPainter теперь работает с core-профилями OpenGL.

мне в свое время пришлось дофига переделывать, чтоб на GL3.3 Core запустить painter.

Compute-шейдеры теперь поддерживаются в QOpenGLShader и QOpenGLShaderProgram, а также в OpenGL ES 3.1+.

так они вроде и так поддерживались. во всяком случае я ими пользовался и УМВР

ckotinko ☆☆☆
()
Ответ на: комментарий от kuzulis

У меня он тоже много жрал на паре простых графиков, оказалось, у пары классов (QLineSeries и еще какой-то) есть что-то вроде опции «включить opengl» и мне это помогло.

Хотя до этого использовал qcustomplot, который столько не жрал и вполне устраивал. Но, типа, раз есть библиотечное средство, давайте использовать его!

s3rjke
()

QRegularExpression теперь зависит от библиотеки PCRE2

Шаг к стандартизации regexp? В любом случае — это просто отлично.

KennyMinigun ★★★★★
()
Ответ на: комментарий от s3rjke

есть что-то вроде опции «включить opengl» и мне это помогло.

Не, это не помогает «уже проходили».

kuzulis ★★
()
Ответ на: комментарий от Deleted

Не только планируется, но уже активно пилится https://codereview.qt-project.org/#/c/184751/ А там и до поддержки в Плазме недалеко. Я спрашивал Мартина насчёт Vulkan-рендера в KWin, он сказал что пока с Wayland не разделается - за Vulkan браться не будет.

Sunderland93 ★★★★★
()
Ответ на: комментарий от Sunderland93

Баг, который сломал Plasma on Wayland пофиксили?

Его в самой плазме давно пофиксили.

curufinwe ★★★★★
()
Ответ на: комментарий от Sunderland93

Спасибо, alexferman. Отличные новости.

В KDE поддержку Wayland осталось уже добить.

Правильно, не надо начинать одно когда осталось добить другую важную тему.

Благодаря QT и KDE, DE летаетдаже на очень старых компах.

Поставил крёстной вчера на старинный десктоп, видеокарта 128 мб, 17 лет отроду (2000 год).

KDE интерфейс летает.

Gnome3 не работал. Прибили гвоздями ожидание поддержки ускорений.

Я даже не могу представить насколько быстрым и лёгким станет QT на новом железе, когда Vulkan заработает.

PiroXiline
()

Круто! Но буду сначала ждать 5.9.1, а лучше - 5.9.2, перед использованием в «продакшене».

Ribtoks
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.