Кампанія Qt Company апублікавала рэліз фрэймворка Qt 6.7, у якім працягнутая праца па стабілізацыі і нарошчванню функцыянальнасці галінкі Qt 6. У Qt 6.7 забяспечана падтрымка платформаў Windows 10+, macOS 12+, Linux (Ubuntu 22.04, openSUSE 15.5. /15, Debian 5), iOS 8.8+, Android 9.2+ (API 11.6+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS і QNX. Зыходныя тэксты кампанентаў Qt пастаўляюцца пад ліцэнзіямі LGPLv16 і GPLv8.
Асноўныя змены ў Qt 6.7:
- Палепшана падтрымка выкарыстання кода, у якім ужываюцца элементы стандарту C++20. Дададзены класы Qt::{strong,weak,partial}_ordering з рэалізацыяй тыпаў std::*_ordering, сумяшчальных са спецыфікацыяй C++17, а таксама макрасы, якія расчыняюцца ў аператар трохбаковага параўнання «» пры зборцы кампілятарамі, якія падтрымліваюць C++ 20 (калі кампілятар падтрымлівае толькі C++17, макрасы адкочваюцца на выкарыстанне звычайных аператараў).
Дадзена магчымасць выкарыстання шаблону класа std::span для прадстаўлення бесперапыннай паслядоўнасці аб'ектаў, які для сістэм з C++17 замяняецца на клас QSpan. Прадоўжана работа па рэалізацыі падтрымкі бібліятэкі std::chrono у розных API Qt. Напрыклад, таймаўты ў API Qt Network зараз апісваюцца з выкарыстаннем тыпаў std::chrono і задаюцца ў форме літаралаў, такіх як "5s" для пазначэння 5 секунд.
- Прадоўжана развіццё эксперыментальнага модуля Qt Graphs, прызначанага для пабудовы розных відаў графікаў і візуалізацыі вялікіх калекцый хутка якія змяняюцца дадзеных. Модуль развіваецца як універсальная замена старога модуля Qt DataVisualization, завязанага на OpenGL, і модуля Qt Charts. Новы модуль выкарыстоўвае Qt Quick 3D і рухавічок рэндэрынгу RHI (Rendering Hardware Interface), які падтрымлівае розныя 3D API (OpenGL, Vulkan, Metal і Direct 3D). У новай версіі ў дадатак да 3D-візуалізацыі дададзена падтрымка двухмерных кругавых і лінейных графікаў, а таксама дыяграм рассейвання. Забяспечана інтэграцыя з даступнымі ў Qt Quick сродкамі анімацыі і эфектамі. Дададзена падтрымка тэм афармлення. Праведзена мадэрнізацыя архітэктуры, якая дазволіла знізіць колькасць аперацый выдзялення памяці.
- Дададзены новыя класы QHttpHeaders, QNetworkRequestFactory, QRestAccessManager і QRestReply для распрацоўкі кліенцкіх прыкладанняў, якія выкарыстоўваюць API на базе HTTP і архітэктуры REST (REpresentational State Transfer).
- Пашыраны магчымасці модуля Qt GRPC, які дазваляе звяртацца да сэрвісаў gRPC. У Qt gRPC дададзены новыя класы для кліенцкіх, серверных і двунакіраваных струменевых выклікаў, якія дазваляюць арганізаваць абмен паведамленнямі з аўтаматычнай актывацыяй пры змене значэнняў. Прапанаваны API Interceptor для прымацавання callback-апрацоўшчыкаў для абраных паведамленняў gRPC, якія можна выкарыстоўваць, напрыклад, для арганізацыі часопісавання ці кэшавання.
- У модуль Qt Protobuf, прызначаны для выканання серыялізацыі Qt-класаў, выкарыстоўваючы пратакол Protocol Buffer, дададзена магчымасць серыялізацыі ў фармат JSON ці з яго.
- У модуль вектарнай графікі Qt SVG дададзеная падтрымка элементаў SVG 1.1 і 2.0, часта выкарыстоўваных у SVG-малюнках на практыцы ( , , , і ), што дазваляе адлюстроўваць большасць SVG-файлаў. Для тых каму неабходна поўная падтрымка SVG 2.0 прапануецца выкарыстоўваць модуль Qt WebEngine. Дададзена ўтыліта svgtoqml для пераўтварэння SVG у QML для імпарту вектарнай графікі напрамую ў граф сцэны Qt Quick. Стабілізавана магчымасць выкарыстання модуля Qt Quick Shapes для высакаякаснай адмалёўкі крывых пры дапамозе фрагментнага шэйдара.
- Дададзена падтрымка варыятыўных шрыфтоў, у якіх таўшчыня, шырыня і іншыя стылістычныя характарыстыкі гліфа могуць адвольна мяняцца. Дададзена падтрымка бібліятэк піктаграм. Пры выкарыстанні выкліку QIcon::fromTheme рэалізавана магчымасць супастаўлення імя піктаграмы з сімвалам у бібліятэцы піктаграм.
- Дадзена магчымасць убудавання родных для бягучай платформы вокнаў у сцэну Qt Quick, што дазваляе задзейнічаць у інтэрфейсе на базе Qt Quick элементы інтэрфейсу, якія прадстаўляюцца платформай, напрыклад, можна ўбудаваць AppKit MapView або Windows Media player.
- Дададзена падтрымка дадання ў прыкладанні на базе Qt Quick або Qt Widgets кода адмалёўкі, які выкарыстоўвае любы які падтрымліваецца ў Qt графічны API (Vulkan, OpenGL, Direct3D, Metal). Даданне робіцца пры дапамозе класаў QRhiQuickItem і QRhiWidget.
- Забяспечана поўная падтрымка платформаў macOS 14, iOS 17, Windows 11 23H2, Android 14, RHEL 9.2, openSUSE 15.5/15, SUSE Linux Enterprise Server 7. Дададзеныя зборкі для Windows, сабраныя пры дапамозе інструментара MinGW на базе LLVM. Дададзены папярэднія зборкі для архітэктуры ARM (для Windows і Linux), для платформы VxWorks 7.1 і для QNX XNUMX.
- Абноўлены стэк Boot2Qt, які можа выкарыстоўвацца для стварэння загружаных мабільных сістэм з асяроддзем на базе Qt і QML. Сістэмнае асяроддзе ў Boot2Qt абноўлена да платформы Yocto 4.3.
- Дададзены новыя прыклады прыкладанняў. Прыклад 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 для паказу дадзеных аб біржавых каціроўках.
Дадаткова можна адзначыць публікацыю інтэграванага асяроддзя распрацоўкі Qt Creator 13.0, прызначанай для стварэння кросплатформавых прыкладанняў з выкарыстаннем бібліятэкі Qt. Падтрымліваецца як распрацоўка класічных праграм на мове C++, так і выкарыстанне мовы QML, у якім для вызначэння сцэнарыяў выкарыстоўваецца JavaScript, а структура і параметры элементаў інтэрфейсу задаюцца CSS-падобнымі блокамі. Гатовыя зборкі сфарміраваны для Linux, Windows і maсOS.
У новай версіі:
- Дададзеныя offline-і online-усталёўнікі для ARM-сістэм з Linux.
- Абноўлена афармленне інтэрфейсу Welcome to Qt Creator, у якім з'явілася падтрымка цёмных і светлых тэм.
- Палепшаны інтэрфейс для перасоўвання панэляў, які ўжываецца ў рэжыме адладкі і стварэнні віджэтаў (Widget Designer). Для вертыкальных панэляў дададзена падтрымка часавага згортвання. Прадастаўлена магчымасць свабоднага перамяшчэння панэляў за іх загаловак без папярэдняга адключэння замацавання.
- Дададзена падтрымка стварэння, разгортванні, запуску і адладкі прыкладанняў для прылад, на якіх выкарыстоўваецца Qt Application Manager (для прыкладанняў на базе Qt 6 і CMake).
- Дададзена частковая падтрымка iOS 17.
- Зменены зборачны каталог па змаўчанні, для якога зараз выкарыстоўваецца падкаталог "build" у кодзе праекта. Змяніць зборачны каталог можна пры дапамозе налады "Preferences > Build & Run > Default Build Properties > Default build directory".
- У рэжыме праекта дададзена секцыя «Vanished targets», у якой адлюстроўваюцца kit-наборы (прывязкі да розных зборачных інструментарыяў і версій Qt), якія ўжо недаступныя, і даецца магчымасць стварэння замены або выкарыстання пры зборцы, разгортванні і запуску іншага існуючага kit-набору.
- Дадзена магчымасць стварэння kit-набораў для праектаў на мове Python (для выбару іншай версіі інтэрпрэтатара).
- Дададзена магчымасць выкарыстання сервераў LSP (Language Server Protocol) для YAML, JSON і Bash.
- У рэдактары кода забяспечана падтрымка пераходу з кампанентаў QML да злучанага з імі коду на C++.
- Праведзена рэарганізацыя налад ClangFormat. Для змены ўласных настроек прадстаўлены тэкставы рэдактар параметраў з праверкай сінтаксісу.
Крыніца: opennet.ru