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)

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

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

Ох уж эти сказочники...

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

КЭП подсказывает что «Кастомизированный Qt» это Qt со своими правками.

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

Только 2GIS. Но у них всегда был свой Qt. И, кстати, не знаю, возможно они от него недавно отказались. Но год назад был Qt 5, а чуть раньше вообще портированный ими самими Qt 4.

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

Это значит, что они взяли исходники Qt, выкинули оттуда всё ненужное и добавили всё нужное:

https://github.com/2gis/2gisqt5android

В итоге их Qt 5 несовместим с официальным Qt 5 и, соответственно, документации на их изменения как таковой нет.

Кроме 2GIS из более-менее популярных проектов на Qt 5 для Android я ещё знаю QML Creator: https://play.google.com/store/apps/details?id=com.wearyinside.qmlcreator&... но он, кажется, мёртвый уже. И ещё вспомнил казуальную игрушку от Google Labs: https://play.google.com/store/apps/details?id=com.google.fpl.voltair

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 3)
Ответ на: комментарий от ZenitharChampion

что 80% из них не используются

У меня используются почти все.

QtGUI

Как там в криокамере? Рисуют через QtWidgets.

RazrFalcon ★★★★★
()

Qt 5.9 жирный. Сборка Qt 5.9 в 8 потоков на i7-2600K длится чуть больше чем 3 часа. В один поток на i7-2600K около 6-ти часов.

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

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

А откуда уверенность, что переход с OpenGL на Vulkan принесёт существенное увеличение производительности, а не уменьшение стабильности с тем же уровнем быстродействия?

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

Короче, Qt для Android OS это странный выбор и там очень много проблем, а разработка похожа на хождение по минному полю. При этом требуется постоянно лазить в Java и ковыряться с JNI. Бяка. Но я давно не ковырялся с Qt 5, возможно ситуация немного улучшилась. Возможно есть резон спросить об этом у Stahl, так как он что-то там делает под Android на этом фреймворке.

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

Qt 5.9 жирный. Сборка Qt 5.9 в 8 потоков на i7-2600K длится чуть больше чем 3 часа.

А другие версии сколько собираются? Какие компоненты Qt собирали, если с примерами, утилитами и всякой экзотикой, то это ещё вменяемое время. Если стандартный пакет, то он в Qt постоянно расширяется, чего стоит один только монструозный Qt 3D.

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

А другие версии сколько собираются?

Точно уже не помню, но, ЕМНИМС, версия 5.6 собиралась быстрее.

Какие компоненты Qt собирали

qt-everywhere-opensource-src-5.9.0.tar.xz целиком. С вот этим вот конфигом:

./configure -v \
  -confirm-license \
  -opensource \
  -prefix "/usr/lib${LIBDIRSUFFIX}/$PRGNAM" \
  -sysconfdir "/etc/xdg" \
  -headerdir "/usr/include/$PRGNAM" \
  -libdir "/usr/lib${LIBDIRSUFFIX}" \
  -docdir "/usr/doc/$PRGNAM-$VERSION" \
  -system-libpng \
  -system-libjpeg \
  -system-zlib \
  -system-sqlite \
  -system-pcre \
  -plugin-sql-sqlite \
  -icu \
  -openssl \
  -verbose \
  -optimized-qmake \
  -dbus-linked \
  -qpa xcb \
  -xcb \
  -glib \
  -accessibility \
  -no-separate-debug-info \
  -no-pch \
  -no-rpath \
  -no-strip \
  -release \
  -no-use-gold-linker \
  -pulseaudio
В общем, стандартный слакбилд со slackbuilds.org.

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от anonymous

Склероз. Аббревиатура уже с большой бородой. «Сам Себе Злобный Буратина» не младше.

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

Если qt-everywhere, то это всё объясняет, с ним идёт всё, что официально входит в Qt, независимо от того используется ли оно на целевой платформе или нет. Я, к примеру, всегда локально собираю по отдельному модулю.

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

Тогда я не понял, оно что, позволяет настраивать какие классы будут в сборке самого Qt а какие нет? Или речь о настройке конкретного приложения? Или если нужен будет еще один классик - сразу всё Qt пересобирать?

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

Qt Lite - это упрощённая обёртка над старыми #ifdef'ами, которые были уже 100 лет.

То есть мы просто контролируем что собирать.

И да, нужно пересобирать Qt и сорцов. Но проблема в том, что так просто поотключать всё не выйдет, ибо много кросс-зависимостей. Но даже в Qt 5.6 дефайнами можно вырезать ~20% веса.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)

Отлично оформлена новость. Спасибо.

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

3D-редактор на Qt

Qt 3D

Вот когда появиться вменяемый 3D-редактор созданный исключительно средствами Qt, тогда и поговорим.

atsym ★★★★★
()

Походу кьютисты поняли, что в гуе им делать нечего, и переквалифицировались на все остальное.

Помянем.

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

Походу кьютисты поняли, что в гуе им делать нечего, и переквалифицировались на все остальное.

Твоя единственная прямая извилина просто не в состоянии понять того, что программисту от кросплатформенного фреймворка нужен не только гуй.

Посочувствуем.

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

Ох уж эти сказочники...

Нихрена не сказочники. Летает с 1 гигом оперативки на каком-то одноядерном целероне 1.1 ГГц с видюхой gforce MX440 под нуво. ЧЯДНТ?

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

Нихрена не сказочники. Летает с 1 гигом оперативки на каком-то одноядерном целероне 1.1 ГГц с видюхой gforce MX440 под нуво. ЧЯДНТ?

просто врешь :)

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

и Qt WebEngine.

На нём уже есть готовые браузеры с инструментами разработчика?

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

Так теперь KDE тормозить вообще не будет?

KDE будет тормозить всегда, потому, что его задача это плюшки а не скорость работы. Если хочешь отсутствие тормозов, то тебе в XFce

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

А где про Pentium2 с 32MB?
Про GMA всё так, могу сказать, что на недобуке с GMA и атомом KDE4 летали. KDE5 по сравнению с ними не особо разжирели

TheAnonymous ★★★★★
()

ManulRedirectsPolicy

Политика редиректа манулов? Манулы не одобряют.

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

Тьфу, то есть они сделали аналог их же утилиты QConfig?

http://doc.qt.io/qt-4.8/images/qt-embedded-qconfigtool.png

А вообще я занимался подобным с Qt 4 и мне даже удавалось получать статические EXE'шники Qt-программ (в винде) размером < 1 MB.

EXL ★★★★★
()
Ответ на: 3D-редактор на Qt от atsym

Вот когда появиться вменяемый 3D-редактор созданный исключительно средствами Qt, тогда и поговорим.

Напиши, чё. Я даже могу подсказать, на что ориентироваться: аналог виндового SketchUp (т.е. редактор для, условно, говоря, домохозяек, в отличие от Блендера, который всё-таки ориентирован на профессионалов или, по крайней мере, на тех, кто пользуется им постоянно).

Или тебе просто заклеймить? «Пока не увижу редактора, не поверю»?

появиться

Гм.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.