Выпуск фреймворка Qt 5.6

    На прошлой неделе, после девяти месяцев разработки, вышла версия 5.6 кроссплатформенного фреймворка Qt.

    Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.

    Новый выпуск принес длительный срок поддержки, новые экспериментальные модули (и удаление устаревших), поддержку новых платформ, а также новый тарифный план для стартапов в коммерческой версии Qt.



    Длительной срок поддержки


    Версия 5.6 является первым LTS-выпуском в пятом Qt и будет поддерживаться и получать обновления три года, в отличии от обычных выпусков, у которых срок поддержки будет один год. С учетом того, что поддержка предыдущей LTS-версии 4.8 была прекращена в конце прошлого года, рекомендуется переход на Qt 5.6.

    Также, в следующих версиях планируется убрать поддержку устаревших компиляторов, в которых недостаточно реализован функционал C++11. Те, кому важна поддержка VS2010 и gcc 4.6, смогут остаться на версии 5.6.

    Лицензия для стартапов


    Для небольших компаний с доходом до 100 000$ появилась новая лицензия "Start-Up", пришедшая на замену Indie Mobile, продажи которой были прекращены. Стоимость лицензии начинается от 49$ (при покупке в течении двух месяцев после выпуска).

    Напомню, что Qt 5.6 будет последним минорным выпуском, доступным под лицензией LGPLv2.1. Начиная с версии 5.7, будет использоваться LGPL и GPL третьей версии.

    Поддержка экранов с высоким разрешением


    В новой версии для всех платформ появилась возможность автоматического масштабирования на экранах с высоким разрешением (HiDPI), как это было раньше на MacOSX. При включении масштабирования, Qt будет автоматически подстраивать размеры графических элементов и шрифтов, а также загружать изображения нужного размера. Масштабирование также автоматически подстраивается при перемещении окна между экранами с разной плотностью точек.

    Новые модули


    Модуль Qt Location, появившийся в прошлом выпуске как предварительная версия, теперь входит в состав Qt. Добавлена предварительная версия модуля Qt SerialBus, позволяющего работать с шинами CanBUS и ModBus.

    Также в состав Qt 5.6 включена предварительная версия модуля Qt Quick Controls 2.0 (в Qt 5.6 он называется Qt Labs Controls), который является новой реализацией библиотеки компонентов для создания пользовательского интерфейса при помощи Qt Quick. Новая версия более легковесная и оптимизирована для использования на встраиваемых устройствах, построена по принципу шаблонов, позволяющих полностью изменить внешний вид компонентов и имеет, помимо стандартной темы, поддержку стилей Material и Universal. Видео с конференции QtWS15, где показана ранняя версия Qt Quick Controls 2.0:


    Изменения в существующих модулях


    • В Qt WebEngine движок Chromium обновлен до версии 45 и получил поддержку плагинов PPAPI, таких как Flash. С Qt WebKit портирован WebActions API и добавлено низкоуровневое API WebEngineCore. Также появилась возможность использовать системные настройки прокси. Версия для Linux Qt WebEngine может быть собрана с использованием системных библиотек.

    • Улучшена совместимость контейнеров с C++11 и STL: добавлены обратные итераторы, key_iterator для QHash и QMap, а также const_iterator для QByteArray. Множество улучшений производительности в QString. QNetworkAccessManager получил поддержку перенаправления запросов HTTP.

    • В Qt Multimedia появился новый QML-тип Playlist, а также Audio Role API для медиаплееров. На WinRT в работе с камерой добавлена поддержка использования фокуса и предпросмотра видео.

    • Qt QML получил поддержку записи имен JavaScript-функций в вывод для планировщика perf на Linux, а также уменьшенное потребление памяти.

    • Qt Canvas 3D теперь может использовать компоненты, основанные на Item из Qt Quick в качестве текстуры, а также поддерживает рендеринг на прямую в сцену Qt Quick.

    • В Qt Virtual Keyboard появилось распознавание рукописного ввода.

    • Модуль Qt 3D получил значительное количество улучшений и в этом выпуске также поставляется как предварительная версия.

    Удаленные и устаревшие модули


    Модуль Qt Script объявлен устаревшим и пользователям рекомендуется перейти на Qt QML. Также устаревшим объявлен Qt Enginio. Модули Qt Webkit и Qt Quick 1 (Qt Declarative) удалены из поставки. Помимо этого, по соображениям безопасности, официальные выпуски собираются без поддержки форматов изображений MNG и JPEG2000. При необходимости, Qt может быть собрана из исходников с включением поддержки данных форматов.

    Поддержка платформ


    • В версии 5.6 включена полноценная поддержка Windows 10, как с ипользованием API win32, так и WinRT. Приложения на Qt могут запускаться на ПК, планшетах и телефонах, а также распространяться через Windows Store. Стали доступны бинарные сборки для Visual Studio 2015. Также добавилась поддержка Windows Embedded Compact 2013. На платформе WinRT появился Qt WebView.

    • В Qt 5.6 for Device Creation появилась возможность разработки и развертывания напрямую из под Windows. В стеке Boot to Qt улучшена совместимость с системами на основе Yocto.

    • Добавлена поддержка NVIDIA Jetson TK1 с использование нового eglfs-бекенда, использующего DRM, EGLDevice и EGLStream. также добавлена поддержка Intel NUC. Полный список встроенных платформ можно посмотреть здесь.

    • Android получил поддержку Qt Nfc. На MacOSX появилась поддержка Qt Positioning и опциональная возможность использования FreeType.

    • На Linux появилась возможность записи логов напрямую в syslog.

    Изменения в инфраструктуре


    При разработке новой версии, на замену предыдущей системе непрерывной интеграции на основе Jenkins, была введена введена в строй новая CI-система собственной разработки — COIN. Новая система позволила повысить скорость тестирования и интеграции изменений в Qt. Помимо этого, COIN позволяет использовать разный набор платформ для разных веток Qt. Еще одним преимуществом является то, что большинство бинарных сборок теперь собирается на таких же системах, на каких и тестируется, т.е. тестируются именно те сборки, которые в последствии и выпускаются.

    Дополнительная информация


    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 43

      +1
      Выскажу пару моментов.

      1. WebEngine — это круто, но жаль, что версия под MinGW в пролете. А Webkit убрали. Ничего не оставив под MinGW.
      2. "Qt Script объявлен устаревшим и пользователям рекомендуется перейти на Qt QML". Может я не понял, но разве не QJSEngine его заменяет?
      3. Но я думаю, что очень многие гораздо с большим нетерпением ждут 5.7, где обещают очень много вкусного.
        0
        Чем вам JavaScript в QJSEngine не устраивает?
          0
          Ничем) Просто написано, что заменяется Qt QML, а вроде QJSEngine.
            0
            На самом деле это очень спорное решение, вот здесь обсуждалось: forum.qt.io/topic/52306/qt-5-5-qt-script-deprecated-what-is-replacement, (к сожалению после того как Qt сделало merge аккаунтов, мои комментарии там стали просто под серым невидимкой =)), это заблуждение думать что QJSEngine везде и всегда заменяет легковесный и отлично интегрированный QtScript. Я применял его в проектах не имеющих ничего общего с QML начиная еще с Qt 3.* — там он был еще не не ECMA совместимый, но кстати тоже отлично читаемый с С++ подобным синтаксисом.

            Не всегда и не везде есть/нужно тащить за собой V8 реализацию если просто требуется какую то несложную обвязку вынести «наружу» в скрипт.

            Я приводил пример в этом топике, он отлично подходил, например для описывания правил фильтрации/сортировки в моделях, построенных на коллекциях QObject-ов…
              +1
              В Qt5.2 V8 заменили на V4
                0
                Да, Вы правы, но это не меняет сути… QtScript был очень легковесной, при этом достаточно стабильной реализацией, который не требовал вообщем то ничего, чтобы его использовать… тут на самом деле "все стороны правы", но только в данном случае Qt применяется такой широкой массой разработчиков и в таком широком спектре задач, что правда у каждого будет своя, ну и в конечном итоге решать все равно будут те кто у руля..
            +1
            а что вкусненького в 5.7 ожидается?
              0
              https://wiki.qt.io/New_Features_in_Qt_5.7

              Они многие модули, например, которые были в коммерческой версии, добавят в Open Source версию. Те же графики, наконец, появятся.
              +2
              Разговаривал на QT Dev 2015 в Берлине с разработчиком WebEngine, услышал много вздохов и увидел много печали в глазах, но вменяемого ответа о том — зачем выпиливать отлично интегрированный Веб движек, прекрасно положенный в инфраструктуру Qt и используемый в очень большом количестве десктопных бизнес приложений и впиливать нечто даже функционально не всегда совместимое не услышал…

              Сравните степень интеграции WebKit с поддержкой native QNetworkAcessManager, QNetworkRequest, QNetworkReply, полностью контролируемого и использующего стандартный для Qt транспортный уровень и сравните с текущим состоянием WebEngine… где ряд вещей просто технически пока не переносятся, вне зависимости от размера бубна…

              По сути последние годы развития Qt это путь в мобильные платформы и понятно что сделать обертку на native webview для каждой из платформ в текущем виде WebEngine гораздо проще чем через интерфейсы WebView, но господа Qt-шники, мир крутится не только вокруг embedded и mobile и есть огромное количество enterprise приложений где новое не всегда лучше хорошо работающего старого…
                0
                Коллега ходил на тренинг от Digia по Qt, и там высказались что теперь стараются заработать на embedded, а не на Desktop'e.
                Наверное поэтому они для некоторых компонентов(Чарты, клавиатура и т.д.) поменяли лицензии. Хорошо или плохо вопрос сложный(хорошо или плохо, что появились Qt Charts, Qt Data Visualization и т.д.)
                  0
                  ну я двумя руками "за" что развивается что то новое и прогрессивное, мне очень нравится QML и я могу представить себе очень много разных его применений, и на десктопе в том числе… но если посмотреть например success story того же KDAB, там очень много enterprise применений, исключительно widget-ных, и забывать про них, на мой взгляд не правильно… мне сложно судить на чем они реально зарабатывают, но мне кажется что будет печально если Qt прошагает дорогой Нокии… а компоненты которые Вы привели в пример, действительно классные… но при этом опустившись на небо и посмотрев в исходники например чего то более базового… например TableView, можно увидеть массу "костылей"…
                +1
                QJSEngine, да. Но входит оно в модуль Qt Qml. Поэтому, QScriptEngine -> QJSEngine, Qt Script -> Qt QML.
                  0
                  Спасибо за разъяснение!
                0
                А модуль Qt Charts доступен в этом релизе в бесплатной лицензии? Вроде я что-то такое слышал, что этот компонент должен стать доступным в бесплатной лицензии, начиная с какого-то релиза. Сейчас он входит в Qt Commercial.
                  +1
                  В следующей итерации так и будет. В 5.7. В 5.6 еще нет.
                    +1
                    В составе сборок Qt еще нет. Но собрать самому из исходников уже можно :)

                    +1
                    Если очень хочется посмотреть как выглядят Qt Charts, а ждать 5.7 ну никак не хочется, можно попробовать собрать их самостоятельно из codereview.qt-project.org/#/admin/projects/qt/qtcharts.
                    +1
                    Потратил пару дней на попытку перехода до 5.6.0 и скажу что там еще много багов.
                    При статик сборке никак не получается скомпилировать или отключить FreeType.
                    В нетронутых сборках с официального сайта использование addBindValue в MySQL приводит к ошибке "QMYSQL3: Unable to fetch data", хотя все прекрасно работает в 5.5.1.
                    Подозреваю там еще много подводных камней которые нуждаются в фиксах.
                    Так что ждем 5.6.1
                      0
                      Далеко не все исправления вошли в 5.6.0. Возможно, давно уже исправлено, но пока только в гите. Ну а если в гите нет — вы знаете, что делать ;)
                        0
                        Там уже не один мой баг репорт.
                        Времени не всегда хватает на копания и поиски решений, а тем более ждать когда пофиксят их на багтрекере.
                        Я о том что с версиями х.х.0 всегда больше времени на переход уходит, и что проще пропустить их, подождать х.х.1 версию.
                      0
                      Небольшое уточнение: под MSVS 2008 эта версия не собирается и в supported platforms её нет. Нужна, как минимум десятая студия.
                        0
                        Спасибо, поправил. VS2008 поддерживается только для Windows Embedded 7.
                          0
                          Собственно, официально MSVS2008 не поддерживается в Qt5 уже давно (если такое вообще было), но 5.5.1 ещё можно было собрать без особых проблем, а в этой сломалось что-то основательное.
                        0
                        Вставлю свои 5 копеек. У меня как раз появился монитор 4К и появилась возможность проверить что там и как. Могу сказать, что багов неприлично много. Некоторые баги не фиксятся годами. Вот например я делал репорт:
                        bugreports.qt.io/browse/QTBUG-36825
                        Два года прошло, но не исправлено, хотя по сути если уж заявили поддержку highdpi, то какбэ надо. В 5.6.0 с багами отображается тема Windows к примеру.
                        Такое чувство, что они поувольняли всех тестеров или просто переориентировались на что-то другое… Qml, мобильная разработка. Однако, я считаю что Qt для десктопа достаточно актуальна, ибо замены я не вижу.
                        У меня коммерческая лицензия и я связывался с разработчиками насчет приоритетного фикса багов, однако получил ответ, что у коммерческих юзеров нет привилегий в этом вопросе. Подскажите кто в курсе, а если сделать динамическую сборку (dll библиотеки отдельно), то можно ли для коммерческих проектов использовать OpenSource вариант? Потому что платить уже чета не хочется на самом деле.
                          0
                          HighDPI это реально головняк… да, они сделали поддержку в ресурсах иконок @2, @3 итд, что в принципе конечно уже шаг вперед, но этого мало… QT_AUTO_SCREEN_SCALE_FACTOR безбожно крив для любого размера шрифта > 100% (Windows)… каких то разумных workaround не предложено… полностью с Вами согласен и уже тоже писал выше… приоритеты сменились… мобильные платформы и QML ориентированный на Full Screen для различных мобильных устройств… для десктопа QML очень интересная штука, но судя по опять же имеющимся и годами не исправляемым багам там просто все болт положили на десктоп..
                          Зато есть время вот на это:
                          https://bugreports.qt.io/browse/QTCREATORBUG-15727
                            0
                            Я очень опасаюсь, что они повторят судьбу Дельфи. Был же хороший инструмент, потом его 10 раз перепродали, потом они пытались объять необъятное, наплодили кучу глючных версий за достаточно приличные деньги. В свое время убежал на Qt и чет чую, что тут те же вилы:) Может пора учить C# и Xamarin? :)
                              0
                              Я очень опасаюсь, что они повторят судьбу Дельфи.

                              Может да, а может и нет. Qt имеет Open Source версию, которой владеет сообщество KDE Free Qt Foundation.
                              0
                              Кстати про HighDPI. При включении поддержки данного режима обычные компоненты становятся нормальными, но контролы становятся огромными. Без включения оного компоненты нормальные, а обычные элементы мелкие.
                                +1
                                QQC1 начали подстраиваться под плотность точек на экране значительно раньше. Но, они не дружат с Auto HiDPI Scaling, и скорее всего не будут :(
                                А вот QQC2 как раз под Auto HiDPI Scaling заточены.
                                  0
                                  Огромное спасибо! Вот в чем дело то!
                                    0
                                    А случайно не знаете, в новых контролах главное меню и таблицы реализованы?
                                      +1
                                      Меню есть, таблиц нет. Список новых конролов Qt Labs Controls
                                      +1
                                      Если MenuBar — то это QQC1. Таблицы и TreeView там же. Но можно и в QQC2 сделать свой MenuBar и запихнуть в ApplicationWindow.header. Кстати, в QQC2 попап (а значит и меню) не является окном.
                                0
                                Можно. Но начиная с Qt 5.7, некоторые новые модули будут под GPL3, так что зависит от используемых модулей.
                                Впрочем, есть мнение, что можно и статически, если предоставлять также объектные файлы, чтобы была возможность пересобрать программу с новой версией библиотеки.
                                На iOS желательно иметь коммерческую версию.
                                  0
                                  Ну у меня модули "core gui widgets xml network printsupport". В будущем надо будет делать поддуржку мобильных платформ. Вот тоже дилемма. То ли юзать qml и весь интерфейс переписать, то ли чета другое попробовать.
                                  "На iOS желательно иметь коммерческую версию."
                                  А с чем это связано?
                                    0
                                    С тем, что условия AppStore несовместимы со свободным ПО.
                                      0
                                      В какой части несовместимы? Клиент Telegram же там есть.
                                        0
                                        И что с того, что он там есть? :)
                                        Уточню, что под свободными я имею в виду копилефтные. Несовместимы в той части, что лицензия AppStore накладывает дополнительные ограничения на использование и распространение ПО.
                                          –1
                                          Мало ли что вы имеете в виду под "свободными". Копилефт — как раз НЕ свободная лицензия.
                                            –1
                                            Хорошая попытка, но нет. Я немного разбираюсь в теме и знаю, что копилефтные лицензии являются свободными. А в BSD-сраче участвовать желания нет.
                                            0
                                            Ну и на https://desktop.telegram.org/ пишут, что всё по GPLv3.

                                Only users with full accounts can post comments. Log in, please.