LINUX.ORG.RU

Релиз Qt 5.7.0 и Qt Creator 4.0.2

 ,


2

4

Сотрудник The Qt Company Ларс Кнолл (Lars Knoll) объявил о выходе новой версии фреймворка Qt 5.7.0 и интегрированной среды разработки Qt Creator 4.0.2, предназначенной для создания кроссплатформенных приложений.

Изменение политики лицензирования и открытие кода коммерческих компонентов
Фреймворк Qt уже давно разрабатывается как свободное программное обеспечение с открытым исходным кодом и The Qt Company полностью поддерживают этот метод разработки и взаимодействия с сообществом. Юридическое соглашение с KDE Free Qt Foundation гарантирует, что фреймворк Qt будет и далее оставаться свободным программным обеспечением.

В Qt 5.7 было немного подкорректировано лицензирование Open Source-версии фреймворка, чтобы привести его в соответствие с современной философией движения свободного программного обеспечения. Начиная с этой версии и далее, Qt будет доступен под двумя основными лицензиями: LGPLv3 (и GPLv2) для почти всех библиотек, входящих во фреймворк, и GPLv3 для различных инструментов, таких как, например, Qt Creator.

Изменение лицензии позволило унифицировать состав Qt: теперь Open Source-версия фреймворка и коммерческая версия одинаковы в наполнении. Начиная с Qt 5.7, оба пакета поставляются с идентичным содержанием. Это значит, что все ранее закрытые компоненты коммерческой версии доступны теперь в Open Source под GPLv3:

Исключением является лишь Qt Quick Compiler: разработчики сообщили, что пока над ним ещё ведутся работы, и, скорее всего, он будет доступен под свободной лицензией в Qt 5.8, выход которого ожидается в октябре этого года.

Подробнее про политику лицензирования можно прочитать по этим ссылкам: Licensing Pages, Licensing FAQ, Пост в блоге qt.io.

C++11
Ранее вместе с Qt можно было использовать C++11 для написания приложений, но сам фреймворк при этом не использовал современные возможности C++ в угоду совместимости и переносимости. Теперь, с релизом LTS версии Qt 5.6 (поддержка которого будет осуществляться в течении трёх лет), разработчики начнут актуализировать кодовую базу Qt 5.7 в соответствии с современным стандартом C++.

Таким образом, с Qt 5.7 и далее будет требоваться компилятор, совместимый со стандартом C++11. Это позволит использовать внутри Qt такие полезные возможности, как константные выражения, move semantics, range-for и auto. Работа над этим уже идёт полным ходом и будет продолжаться в следующих версиях.

Qt 3D
Модуль Qt 3D, предварительно доступный для ознакомления в двух прошлых выпусках фреймворка, теперь достиг стабильного состояния и был добавлен в релиз. Qt 3D является дополнением библиотек Qt для работы с трёхмерной графикой (Qt OpenGL, Qt Canvas 3D и Qt Data Visualization) и позволяет создавать трёхмерные графические интерфейсы пользователя. Также фреймфорк позволяет работать с позиционированным звуком и физической моделью 3D-сцены. Qt 3D предоставляет в использование 3D-движок с API, доступным из C++ и QML, что позволяет без труда вставлять и обрабатывать 3D-контекст в Qt-приложениях. Созданием архитектуры и разработкой Qt 3D в основном занимался партнёр The Qt Company — KDAB. Получить более подробную информацию по Qt 3D можно в официальном блоге qt.io.

Qt Quick Controls 2
В Qt 5.7 вошла новая версия элементов пользовательского интерфейса, предназначенных для использования на мобильных и встраиваемых устройствах вместе с технологиями Qt Quick и QML. Как заверяют разработчики, Qt Quick Controls 2 был полностью реализован с нуля и стал намного производительнее и экономнее, чем Qt Quick Controls 1, который был изначально ориентирован для создания десктопных приложений и имел избыточную функциональность, неприемлемую для слабых устройств. Qt Quick Controls 1 по-прежнему доступен в Qt 5.7 и его можно и дальше использовать для разработки десктопных приложений, более того, Qt Quick Layouts отлично работает с обоими наборами элементов управления.

Qt Quick Controls 2 позволяет создать собственный набор элементов управления благодаря гибкой системе пользовательских стилей. Кроме того, Qt Quick Controls 2 содержит три предустановленных стиля, доступных на всех поддерживаемых платформах:

  • Default — простой и минимальный стиль, который предлагает максимальную производительность;
  • Material — стиль, основанный на рекомендациях руководства Google Material Design Guidelines;
  • Universal — стиль, основанный на руководстве Microsoft Universal Design.

Дополнительную информацию можно получить в официальном блоге qt.io.

Новая функциональность в существующих модулях
Огромное количество изменений вошло в существующие библиотеки Qt, основные из них:

  • Qt Core
    • Использование poll() вместо select() в цикле событий позволяет работать с большим количеством файловых дескрипторов;
    • Qt теперь использует std::atomic для атомарных классов.
  • Qt Gui
    • Оптимизации NEON для масштабирования изображений;
    • Оптимизация обёрток для функций OpenGL.
  • Qt QML и Quick
    • Поддержка JIT для WinRT и 64-битных ARM-ов в Qt QML, улучшающая производительность;
    • Отладчик теперь позволяет работать с несколькими экземплярами QJSEngine одновременно;
    • Улучшена интеграция профилировщика и анализатора.
  • Qt WebEngine
    • Qt WebEngine теперь базируется на Chromium 49 и может печатать в PDF;
    • Поддержка DRM-защищённого видео в HTML5.
  • Qt NFC
    • Поддержка Android OS.

Посмотреть все вошедшие изменения в релиз можно здесь, а с известными ошибками ознакомиться можно здесь.

Qt для встраиваемых устройств
В Qt 5.7 «из коробки» поддерживается следующее оборудование:

  • The NVIDIA DRIVE CX boards (Tegra X1, 64-битный ARM);
  • The Rasberry Pi 3 (32-битный режим).
  • Устройства на i.MX7 (без GPU, используется Linux framebuffer и программный рендерер Qt Quick).

В Microsoft Windows теперь возможно разрабатывать приложения для встраиваемых систем на Linux. Помимо этого, Qt 5.7 больше не будет поддерживать MS Windows Embedded. Заявлена полная поддержка QNX, включая предустановленные пакеты. Узнать больше об использовании Qt 5.7 для встраиваемых устройств можно в официальном блоге qt.io.

Qt Creator 4.0
Qt 5.7 поставляется в комплекте с Qt Creator 4.0.2, в котором реализована поддержка новых элементов пользовательского интерфейса Qt Quick Controls 2 и улучшена работа с инструментарием QML и компилятором Clang/LLVM. Подробнее можно посмотреть на видео. Список вошедших изменений в Qt Creator 4.0.2 можно посмотреть здесь.

Модули, представленные для ознакомления
Qt 5.7.0 содержит несколько новых модулей, представленных для ознакомления, которые впоследствии могут войти в релиз:

  • Qt Wayland Compositor — на основе этого модуля можно легко создать собственный композитор Wayland, что будет полезно для встраиваемых устройств. Модуль поддерживает как QML, так и C++ API, подробнее о нём можно почитать здесь;
  • Qt SCXML — совершенно новый модуль, для интеграции в Qt конечных автоматов в общем виде на основе диаграмм состояний Харела. Он опирается на фреймворк Qt StateMachine и позволяет загружать различные типы конечных автоматов;
  • Qt Gamepad — позволяет взаимодействовать с игровыми устройствами на Windows, Linux, Android и iOS из QML и C++;
  • Механизм обновления Qt Over-the-Air (OTA) для встраиваемых устройств, является важнейшей технологией в IoT, подробнее о его внедрении можно почитать здесь;
  • Модуль Qt SerialBus теперь имеет поддержку CAN и Modbus.

Скачать подготовленные сборки Qt 5.7.0 и Qt Creator 4.0.2 можно с официального сайта www.qt.io/download.

>>> Анонс Qt 5.7.0 и Qt Creator 4.0.2

★★★★★

Проверено: Falcon-peregrinus ()
Последнее исправление: DeadEye (всего исправлений: 5)

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

QtXml и QtSvg мертвы.

Посмотрим правде в глаза, XML в Qt появился ещё в Qt3 и честно отслужил свои 15 c гаком лет. Время идёт, аппетиты растут, на смену SAX и DOM пришёл XSLT и QtXmlPatterns, старый QtXml вынесен в отдельный модуль. Нормальный процесс разработки, технологии развиваются, караван идёт, нытики ноют.

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

зачем в последних версиях добавили emit сигналов в методы setRequestToSend и setDataTerminalReady

эммм.. оно как-бы давно/всегда уже там было... это проперти с get/set/notify.

У меня из-за этого общение стало ровно в два раза медленнее.

эмм... а что, постоянно дергаются сеттеры, что-ли? o_O и как сигнал может повлиять на скорость?

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

QtMultimedia годится для воспроизведения примитивный роликов/треков и всё

Это то да. Но если есть задача сделать некую QML анимацию, в которой есть видео - то никуда не деться. Например, дизайнеры заказчика дают готовый юз/кейс в фотошопе где, к примеру, при загрузке приложения должна «проигрываться» какая-нить «крутая» анимация, типа «Welcome». Сделать ее точь-в-точь на QML нереально (например, там что-нить вращается, какие нить машинки в 3-д и прочее)... поэтому приходится вырезать это видео и вставлять в аппликуху и крутить его... но оно тормозит шо ппц... ;) .. вот так вот..

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

Да, только пришлось немного «пропатчить» QtMultimedia чтобы оно рендерило видео используя HW ускорение: QTBUG-53646

Вам там человек по ссылке правильно указал, что нужно добавить свой QSGVideoNode и оформить его в videonode-плагин, мы так и сделали у себя в проекте. Для каждого бекенда своя реализация ускорения, у Vivante одна, у Nvidia другая. При этом нужно правильно сформировать QVideoFrame и отправить его в QAbstractVideoSurface, полученный из QML. Естественно, ни строчки кода измений ни в самом Qt, ни в QML, стандартный MediaPlayer будет играть с ускорением так как нужно.

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

QtXml и QtSvg мертвы. И тд.

Ты знаешь что делать, Брюс.

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

Вам там человек по ссылке правильно указал, что нужно добавить свой QSGVideoNode и оформить его в videonode-плагин, мы так и сделали у себя в проекте

А можно примерчик поподробнее, как вы так делали?

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

К сожалению, простого примерчика нет, нужно читать исходники Qt и плагинов. И документацию по QMediaPlayer, QVideoRendererControl, QVideoFrame. В первую очередь разобраться в каком формате Nvidia sink может выплёвывать видео кадры, вполне возможно там используются нестандартные расширения OpenGL.

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

выплёвывать

То-есть не выплёвывать, а принимать. В случае с Xv формат понятен и его реализация есть в Qt Multimedia Widgets, а что за зверь прячется за nv_gl_eglimagesink нужно разбираться.

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

постоянно дергаются сеттеры

Да. Есть прибор, с котором только там можно общаться.

как сигнал может повлиять на скорость?

Хз. Но факт есть.

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

Вот и отлично, в дебиане уже есть пакеты, пользую - доволен (:

В sid 5.6.1, в experimental еще не завезли. Ты уверен, что у тебя 5.7 из оф. репозитория?

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

Я, в общем то, про Qt Creator 4. Qt в том, что сейчас пишу, не использую.

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

«ну чо ты начинаешь, нормально же общались!» :) В том-то и дело что приходится проверять в разных, т.к. проекты редко ограничиваются одной платформой и набором тулов, а клиенты, которые что-то всё сами хотят собирать, редко живут в одном IDE: тут вангуют выше про KDevelop, но читают как видно по диагонали — эклипц (андроид NDK и... «сейлзфорс» — может слышал? :)), msvs (ужас-ужас! там тоже теперь есть андроид... На наших проектах для сборки используют чаще cmake, но cлучается и maven :) Матрица сборки в CI — как здрасте. Что, Android Studio и «грабле»? Не нужно А как же! Как только заплатят за сборку в нем. И еще порой XCode (у одного клиента build-сервер для кросс-сборки под Lin/Win/MacOS крутился на mac-mini :)) Знаю приверженцев подхода «пишу в своем любимом IDE, ашипки в других идах/компиляторах/осях поправлю потом» — обычно это приводит к про*бам и превозмоганиям типа мистической невозможности в линуксе найти папку «Desktop» при поиске приведением к одному регистру (потому что это усвоенная монокультурная идиома на основной платформе), либо писанины логов внутрь бандла под макось вместо «рядом с экзеком» (а чо, в линуксе и оффтопе прокатывало же :)) — клиенты-то выбирают каждый свое (от платформы до IDE), что не мешает продать то же самое любителям других платформ и идов — плюс инструкции по сборке «под что угодно за ваши деньги». QtCreator чот не заказывали — в него тыкали палкой только из-за Qt, который сам-то нужен все реже. Сам по себе IDE хорош, который есть... и работает.

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

Как я рад, что ты не прав! Не хотел бы я жить в твоём мире.

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

И выловили там все баги, в т. ч. с разбором C++ встроенным парсером.

Но зачем? Они же теперь на clang перешли, поняли что свой парсер накладненько поддерживать.

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

qtcreator4.0.0

Всё работает быстро и хорошо. Лучше ИДЕ нет. Хкоде не умеет добавлять директории исходных файлов. Как люди импортируют неизвестно, достаточно написать три строчки.

INCLUDEPATH += $$SRC/man/v HEADERS += $$SRC/man/v/*.h* SOURCES += $$SRC/man/v/*.c*

Падать нечему.

Из недовольств 1) Ctrl+Backspace не убивает слово слева 2) Ctrl+Delete останавливается и не может убить пробел справа 3) Лучшая навигация Ctrl+Arrows в MSVS и JetBrains продуктах

Всё чаще приходит идея написать свой текстовый ASCII редактор и послать эту лучшую ИДЕ куда подальше.

ibatrakov
()
Ответ на: qtcreator4.0.0 от ibatrakov

написать свой текстовый ASCII редактор и послать эту лучшую ИДЕ куда подальше

Все новички так думают. QtC пишут уже 7 лет не просто так.

RazrFalcon ★★★★★
()
Ответ на: qtcreator4.0.0 от ibatrakov

Лучшая навигация Ctrl+Arrows в MSVS

Ой, не сказал бы. Там даже мультикурсорности нет из коробки. Хотя в Qt Creator её тоже нет.

EXL ★★★★★
() автор топика
Ответ на: комментарий от alex-w

У него хоть и поток сознания был, но косяки случаются. Я для embedded использую. Но другие среды, думаю, вообще врядли бы смогли запускать код по одному нажатию клавиши на плате, которая физически за океаном находится. И да, пока QtC, для меня, это тот оптимальный набор необходимого минимума для удобной разработки, который другие среды пока не могут обеспечить, хотя в них, бывает, что-то отдельное реализовано на порядки лучше (ну или, хотя бы, в разы :).

h4tr3d ★★★★★
()
Ответ на: qtcreator4.0.0 от ibatrakov

Всё чаще приходит идея написать свой текстовый ASCII редактор

вы не родственник Столману?

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

Мультикурсорность есть, но малоюзабельная. Попробуй: Shift+Alt+ArrowUp/Down.

UPD: точнее это позиционируется как column edit и vertical block selection.

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

Косяки где угодно могут возникнуть, но вот чтобы вообще одни косяки - это либо сферические руки, либо сказочник великий.

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

Сделать ее точь-в-точь на QML нереально (например, там что-нить вращается, какие нить машинки в 3-д и прочее)... поэтому приходится вырезать это видео и вставлять в аппликуху и крутить его

эм.. а если у вас iOs/Android и еще iPad с планшетами на андроид, будете видео нарезать на все форматы экранов? :D

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

эм.. а если у вас iOs/Android и еще iPad с планшетами на андроид, будете видео нарезать на все форматы экранов? :D

эммм... приложение для ембеддед с задаными диагоналями/разрешениями дисплеев.

PS: да и к чему этот «вброс» про iOs/Android и какие-то форматы, я вообще - не понял (вроде нигде это не упоминалось)... скалирование и пр., что-ли отменили? как будто, не придется переписывать/дописывать сам код QML для этого...

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

да и к чему этот «вброс» про iOs/Android и какие-то форматы

ээ, ну многие рассматривают сейчас Qt как платформу для мобайла, вот и интересно стало

скалирование

скалирование одного видео под совершенно разные форматы экранов? QML то как раз вроде позволяет делать «резину»

приложение для ембеддед с задаными диагоналями/разрешениями дисплеев.

ну тогда да, тут оправдано если под 1 девайс делаете

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

Нафига они тебе? На официальном сайте бинарный инсталлятор. Ставь в /opt да юзай.

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

Сделай - будут. Мне нужен был PPA - взял и сделал. Ты хуже меня? :)

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

Да я вообще слабо представляю как им адекватно пользоваться можно: в каком сценарии.

h4tr3d ★★★★★
()

С последним минорным обновлением Qt&QtCreator редактор формы стал сохранять лейблы всех фокусных элементов принудительно вставляя амперсанд. В результате чего у меня поехали все переводы. Никто не в курсе как отключить это безобразие?

totik
()

Когда пофиксят падения? На osx 10.10 падает практически от любого клика. Например, https://blog.inventic.eu/2015/05/crash-in-qtreewidget-qtreeview-index-mapping...

В результате проще дропнуть линукс и написать платформо-зависимо, чем писать на кути и иметь проблемы на целевых платформах.

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

Нету тестеров у The Qt Company, как это не печально.

EXL ★★★★★
() автор топика
Ответ на: комментарий от anonymous
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   org.qt-project.QtWidgets      	0x0000000106569270 QTreeModel::index(QTreeWidgetItem const*, int) const + 176
1   org.qt-project.QtWidgets      	0x00000001065694eb QTreeModel::parent(QModelIndex const&) const + 75
2   org.qt-project.QtWidgets      	0x00000001065427b7 QTreeView::isIndexHidden(QModelIndex const&) const + 71
3   org.qt-project.QtWidgets      	0x0000000106536d5d QTreeView::visualRect(QModelIndex const&) const + 93
4   org.qt-project.QtWidgets      	0x00000001064df85c QAccessibleTableCell::rect() const + 44
5   org.qt-project.QtWidgets      	0x00000001064df619 QAccessibleTableCell::state() const + 169
6   libqcocoa.dylib               	0x000000010a14d05d QCocoaAccessible::hasValueAttribute(QAccessibleInterface*) + 61
7   libqcocoa.dylib               	0x000000010a149b2d -[QMacAccessibilityElement accessibilityAttributeNames] + 413
8   com.apple.AppKit              	0x00007fff91145d16 NSAccessibilityEntryPointAttributeNames + 124
9   com.apple.AppKit              	0x00007fff913b44b2 -[NSObject(NSAccessibilityInternal) _accessibilityAttributeNamesClientError:] + 56
10  com.apple.AppKit              	0x00007fff913b78d6 CopyAttributeNames + 216
11  com.apple.HIServices          	0x00007fff994ac24f _AXXMIGCopyAttributeNames + 245
12  com.apple.HIServices          	0x00007fff994b5837 _XCopyAttributeNames + 367
anonymous
()
Ответ на: комментарий от kachsheev

nope

https://bugs.kde.org/show_bug.cgi?id=309193

На 5.6.0 точно не работает. Точнее работает нормально только в qtcreator, а например в qbittorrent в русской локали открыть меню через альт по прежнему можно только в русской раскладке.

В чейнджлоге 5.7.0 ничего на эту тему не нашел.

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