В этом месяце много релизов, хороших и разных. Так, на днях компания Qt Company опубликовала релиз фреймворка Qt 6.7. Разработчики придерживаются прежней стратегии как по стабилизации работы, так и по увеличению функций ветки Qt 6. Поддерживается много платформ, включая Windows 10+, macOS 12+, Linux (Ubuntu 22.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Подробности — под катом.

Главные изменения и дополнения:

  • Одно из наиболее интересных нововведений имеет отношение к модулю Qt Graphs. Он экспериментальный и предназначен для создания разных графиков, а также визуализации больших коллекций быстро меняющихся данных. Модуль развивается в качестве универсальной замены «предка» — Qt DataVisualization, завязанного на OpenGL, и модуля Qt Charts.

  • Что касается новинки, то она использует Qt Quick 3D и движок рендеринга RHI (Rendering Hardware Interface). Последний поддерживает разные 3D API (OpenGL, Vulkan, Metal и Direct 3D). В новой версии добавлена поддержка двумерных круговых и линейных графиков плюс диаграмм рассеяния. Плюс обеспечена интеграция со всеми инструментами и эффектами анимации, которые доступны в Qt Quick.

  • Ещё появились новые классы QHttpHeaders, QNetworkRequestFactory, QRestAccessManager и QRestReply, они нужны для разработки клиентских приложений. Но не всех, а тех, где применяется API на базе HTTP и архитектуры REST (REpresentational State Transfer).

  • В модуле векторной графики Qt SVG появилась поддержка элементов SVG 1.1 и 2.0, часто используемых в SVG-изображениях на практике (<symbol>, <marker>, <pattern>, <mask> и <filter>). Это даёт возможность отображать подавляющее большинство SVG-файлов. Также добавлена и утилита svgtoqml для преобразования SVG в QML для импорта векторной графики напрямую в граф сцены Qt Quick.

  • Ещё одно важное обновление касается работы с кодом, где задействованы элементы стандарта С++20. Здесь добавлены классы Qt::{strong,weak,partial}_ordering с реализацией типов std::*_ordering, совместимых со спецификацией C++17, а также макросы, которые раскрываются в оператор трёхстороннего сравнения "<=>" при сборке компиляторами, поддерживающими C++20 (если компилятор поддерживает только C++17). Кроме того, теперь можно использовать шаблон класса std::span для представления непрерывной последовательности объектов, который для систем с C++17 заменяется на класс Qspan. Также разработчики выдерживают и стратегию расширения поддержки библиотеки std::chrono в различных API Qt.

  • Значительно увеличены возможности такого важного модуля, как Qt GRPC, который даёт возможность обращаться к сервисам gRPC. В него добавлены новые классы, причём для разных потоковых вызовов, включая клиентские, серверные и двунаправленные потоковые вызовы. Они дают возможность обеспечить обмен сообщениями с автоматической активацией при изменении значений.

  • Также в модуле Qt Protobuf, который предназначается для выполнения сериализации Qt-классов, появилась возможность сериализации в формат JSON или из него.

  • А ещё появилась возможность встраивания нативных окон в сцену Qt Quick. Это обеспечивает возможность задействования в интерфейсе на базе Qt Quick элементов интерфейса, предоставляемых платформой, — например, можно встроить AppKit MapView или Windows Media player.

  • Обеспечена крайне важная для многих поддержка платформ macOS 14, iOS 17, Windows 11 23H2, Android 14, RHEL 9.2, openSUSE 15.5, SUSE Linux Enterprise Server 15. Добавлены сборки для Windows. Более того, добавлены и предварительные сборки для ARM-архитектуры, для платформы VxWorks 7 и для QNX 7.1.

  • Для приложений добавлены новые примеры. Так, это Lightning Viewer, использующий Qt Location и Qt Quick Controls для наглядной визуализации данных о грозах на карте. Новая демонстрация OSM Buildings, использующая Qt Quick 3D, Qt Positioning и Qt Network для создания 3D-карты зданий на основе информации с OpenStreetMap. В примере Virtual Assistant продемонстрированы возможности по работе с 3D-анимацией. В примере Volumetric rendering показано, как использовать 3D-текстуры в Qt Quick 3D для объёмной трассировки лучей. Полностью переделан пример StocQt, использующий Qt Graphs для показа данных о биржевых котировках.

  • Коснулись изменения и интерфейса для перемещения панелей. Он применяется в режиме отладки и создания виджетов (Widget Designer).

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

  • Предоставлена возможность создания kit-наборов для проектов на языке Python (для выбора другой версии интерпретатора).

  • Добавлена возможность использования серверов LSP (Language Server Protocol) для YAML, JSON и Bash.

  • В редакторе кода обеспечена поддержка перехода из компонентов QML к связанному с ними коду на C++.

  • Проведена реорганизация настроек ClangFormat. Для изменения собственных настроек предоставлен текстовый редактор параметров с проверкой синтаксиса.

  • Наконец-то появилась частичная поддержка 17-й версии iOS.

  • Интегрирована возможность создания, развёртывания, запуска и отладки приложений для устройств, на которых используется Qt Application Manager (для приложений на базе Qt 6 и CMake). 

Стоит отметить, что исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2.

Комментарии (24)


  1. dprotopopov
    10.04.2024 17:13

    Мыши кололись, плакали, но продолжали есть кактус ...

    То есть никого в Рассии не волнует, что владельцы Qt полностью не заинтересованы с общении с россиянами и хвалённая комьюнити корова ничего не стоит?


    1. killyself
      10.04.2024 17:13

      А чего, в России нельзя апдейты на qт ставить больше? Тогда то конечно и новость не нужна, согласен


    1. maisvendoo
      10.04.2024 17:13
      +2

      Майнтейнеры дистрибутивов линукс вполне заинтересованы. В репозиториях арча, например, Qt 6.6.3 и QtCreator 12.0.4 вполне доступны


      1. monah_tuk
        10.04.2024 17:13

        Гит и сборка из исходников тоже


    1. Vad344
      10.04.2024 17:13

      Есть адекватная альтернатива?


      1. maisvendoo
        10.04.2024 17:13
        +1

        Изучаю этот вопрос с того момента, как сборки для винды перестали быть доступны. Пока не особо. Есть много разных сторонних библиотек, закрывающих частные вопросы, но альтернативы в виде целостного фреймворка мне не попадалось. Самое ценное-то, имхо, в Qt не GUI, а концепция сигналов/слотов. Оно есть в boost, но как по мне, boost уж слишком развесист.


        1. crackedmind
          10.04.2024 17:13
          +1

          https://github.com/KDAB/KDBindings


          1. gudvinr
            10.04.2024 17:13
            +2

            Попробуйте открыть сайт https://www.kdab.com/ из России :)


            1. crackedmind
              10.04.2024 17:13
              +1

              А зачем вам сайт, если исходники на github лежат? :)


              1. gudvinr
                10.04.2024 17:13
                +1

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

                Основная проблема в том, что завязываться на код, авторы которого вставляют палки в колёса, это ненадёжно. В данном случае - это менять шило на мыло


                1. crackedmind
                  10.04.2024 17:13
                  +1

                  Конкретно эта библиотека header only и без привязок Qt, реализует signal-slot и property. Лицензия - MIT. Поэтому, именно с этой библиотекой особых проблем не вижу


                1. equeim
                  10.04.2024 17:13

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

                  Это если никаких зависимостей кроме Qt нет. Или все конпилируешь сам ручками (или упаси боже собираешь монстра Франкенштейна из разных бинарников с васянских сайтов).

                  Пакетный менеджер сам все соберет из исходников. Правда в случае vcpkg обновления Qt можно ждать месяц-два.


                  1. monah_tuk
                    10.04.2024 17:13

                    Там оверлеем подтянуть можно... если манифест используешь


          1. maisvendoo
            10.04.2024 17:13
            +1

            Спасибо, опробовал в своем проекте, который принципиально пишу без применения Qt. Работает


        1. Vad344
          10.04.2024 17:13
          +1

          Сисиема сигнал/слот - вещь приятная, особенно при построении многонитевых приложений, но вовсе не обязательная.


        1. monah_tuk
          10.04.2024 17:13

          libsigc++?



  1. DungeonLords
    10.04.2024 17:13
    +3

    Ищите бинарные сборки Qt Creator? Посмотрите на at. Вот пример как установить Qt, Qt Creator на Linux

    aqt install-qt linux desktop 6.6
    
    aqt install-tool linux  tools_qtcreator 9.0.0-0-202211220359
    

    The third parameter "arch" is a directory name, you can find it from https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/tools_qtcreator/

    Full manual

    ln -s qtcreator /home/a/Tools/QtCreator/bin/qtcreator
    


    1. DungeonLords
      10.04.2024 17:13
      +1

      В моём примере ошибка в симлинке. Итак, если вы хотите в консоли писать qtcreator и при этом запускался файл /home/a/Tools/QtCreator/bin/qtcreator тогда пропишите

      sudo ln -s /home/a/Tools/QtCreator/bin/qtcreator /usr/bin/qtcreator
      

      Важно. Не используйте этот трюк, если у вас в системе установлен qtcreator из пакетного менеджера apt во избежание коллизий...


  1. asaks
    10.04.2024 17:13
    +2

    Что в 12, что в 13 версии при нескольких запущенных экземплярах QtCreator, у меня постоянно выскакивает ошибка, что QtCreator не может записать в файл default.qws, в 10 версии такой ошибки не возникает


    1. DungeonLords
      10.04.2024 17:13

      На багтрекер писали?


  1. DungeonLords
    10.04.2024 17:13

    Ищите как собрать Qt 6 на Linux из исходных кодов? Попробуйте мой репозиторий


  1. lexa
    10.04.2024 17:13
    +2

    Удивительно, как по разному все смотрят на changelog.
    Я вот считаю важнейшим нововведением Qt 6.7 QRhiWidget, а этого даже и в списке не оказалось


  1. Shibarius
    10.04.2024 17:13

    Считаю что релиз является значительным шагом вперёд в экосистеме разработки Qt, демонстрируя стремление компании к инновациям и отзывчивость на потребности разработчиков.