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 ()

Ответ на: комментарий от atsym

Ага, вот так тебе успешный многочеловеколетний продукт заопенсорсили. Вроде большой, а в сказки веришь.

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

О, я им даже пользовался. Гораздо шустрее гугловского эмулятора.

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

А где про Pentium2 с 32MB?

Человек рассказывал про машину 2000го года. Ну пусть даже Пентиум3 с 64МБ.

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

Видеокарта 128 мб не смущает? 2000 год это вуду 5 и geforce 2, самый топовый geforce да, с 128МБ.
Но тогда и остальное железо тоже топовое, какие нафиг 64МБ.
Пентиум4 - тоже конец 2000го, но даже если Пентиум3, у меня вот celeron tualatin, там 512МБ sdram стоит. А на пентиум4 вполне можно и пару гигов DDR поставить, пусть и не сразу

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

Видеокарта 128 мб не смущает? 2000 год это вуду 5 и geforce 2, самый топовый geforce да, с 128МБ.

В этой истории смущает абсолютно все. Поэтому и реакция такая.

Но тогда и остальное железо тоже топовое, какие нафиг 64МБ.

Пентиум4 - тоже конец 2000го, но даже если Пентиум3, у меня вот celeron tualatin, там 512МБ sdram стоит. А на пентиум4 вполне можно и пару гигов DDR поставить, пусть и не сразу

«Intel Pentium 4 — одноядерный x86-совместимый микропроцессор компании Intel, представленный 20 ноября 2000 года».

Если мне не изменяет память, до нас тогда добирались компы значительно медленнее чем сейчас. Сейчас запаздывание по новым моделям месяц-два. Тогда было пол года.

Ну и финалити так сказать - на i7 c 32гб и нвидиа-9600 КДЕ5 иногда люто тормозит. )

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

до нас тогда добирались компы значительно медленнее чем сейчас

До нас может и медленнее, до некоторых мажоров быстрее. И даже если был куплен сильно позже как б/у, от этого не перестаёт быть «компьютером 2000го года»

Лично могу сказать, что на pentium 4, правда более современном (S775), с 2 ГБ памяти, кде4 бегали вполне нормально, в это время уже появлялись core i 1го поколения. Ещё и из исходников всё, у меня собиралось дня за 2, ЕМНИП (включая гцц, опенофис, лису и т.д.)
Видеокарта была какой-то радеон, тоже не сильно быстрый

КДЕ5 иногда люто тормозит

Попробуй переключи xrender/opengl
Или nouveau вместо драйвера?

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

Лучше стандартный, если собираетесь писать «привычное» и более-менее сложное приложение. С Qt достаточно много проблем в этом плане - включая то, что постоянно приходиться дёргать jni, периодически есть проблемы с рендерингом на некоторых девайсах и т.д.

anonymous ()
Ответ на: комментарий от TheAnonymous

Лично могу сказать, что на pentium 4, правда более современном (S775), с 2 ГБ памяти, кде4 бегали вполне нормально, в это время уже появлялись core i 1го поколения. Ещё и из исходников всё, у меня собиралось дня за 2, ЕМНИП (включая гцц, опенофис, лису и т.д.)

КДЕ4 был как-то более вменяем, но пробовал я его уже очень давно. А вообще в Генту все как-то шустрее шевелилось, чем в этих наших дебианах-убунта-минтах.

Попробуй переключи xrender/opengl

Не знаю, когда снова придет время экспериментов, но на всякий случай - где это делается? Дрова nvidia.

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

в параметрах Оборудование, Экран, Обеспечение эффектов

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

The GeForce 3 (NV20) (2001-го). BIOS видяхи-то мне сказал 2000 - это и понятно.

Вот по поводу XRender не буду утверждать точно. Я такой, композитор включил и кажеться OpenGL 3.1 поставил, посмотрел, что работает шустро - да и Ок.

Они наверное Fallback сами хорошо разрулили.

От NVidia была поддержка OpenGL 1.2.

А в Nouveau - хз, какой OpenGL они смогли на этой карте.

https://nouveau.freedesktop.org/wiki/FeatureMatrix/

Но смогли много. В SMPlayer на mpv движке фильмы ~720p идут.

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