Software-update: Qt 6.4

Qt logo (75 pix) Versie 6.4 van Qt is uitgebracht. Qt, uitgesproken als cute, is een opensource- en platformonafhankelijke omgeving waarmee applicaties en grafische gebruikersinterfaces kunnen worden ontwikkeld. Het wordt onder andere gebruikt in Calibre, KDE, Opera, Skype, VLC Media Player, Digikam, Wireshark en VirtualBox. Meer informatie over deze release is hier te vinden. Dit zijn de release notes waarmee deze uitgave vergezeld gaat:

WebAssembly

With Qt 6.4 we are taking the support for WebAssembly out of technology preview. With Qt for WebAssembly, Qt developers can use their existing skills, and often existing code, to target the web. Applications targeting the web assembly platform can run in most modern web browsers, and are easily distributed like any other web content. Thanks to near-native performance, and the rich UI and 3D features of Qt Quick and Qt Quick 3D, solutions requiring heavy data processing and demanding visualization can now easily be built for the web.

However, WebAssembly isn't like any other platform that Qt supports. Applications run in the sandbox of the browser, which imposes some limitations on how much access they have to the local machine or operating system services. And they are also running in an environment that requires cooperation with the browser itself. Qt tries to abstract the respective platform particularities away, both transparently in the platform integration and through some dedicated APIs. To achieve the best results, make yourself familiar with the particular technical requirements for this platform. You can already sign up for our upcoming WebAssembly webinar.

WebAssembly itself continues to be a fast moving platform, with the potential to make a huge impact on the application development industry. We are committed to support web assembly, and will continuously improve and adapt Qt to make sure that Qt applications developed for web assembly continue to provide a great user experience for end users.

New and Renewed Modules

Qt 6.4 introduces new modules as technology previews, and brings back one of the modules that hadn't been available for Qt 6 users so far.

iOS Style for Qt Quick (TP)

User interfaces developed with Qt Quick Controls automatically use the native styling support for Windows and macOS, and for Android using the Material style. For Qt 6.4 we have added a native-looking style for Qt Quick applications running on iOS. The iOS style supports dark and light mode on iOS platforms, and can be used on macOS as well, which makes it easy to develop UIs optimized for that style from the comfort of a macOS development environment.

Qt HTTP Server (TP)

With this new module we make it easy to add an HTTP server to any Qt application. The server implements partial support for HTTP 1.1, and supports security through the Transport Layer Security protocol. However, it is designed specifically for making data available within a trusted network.

Qt Quick 3D Physics (TP)

We integrated physics simulation into Qt Quick 3D to make it easy to build 3D scenes in which objects move and interact naturally. Handcrafting such scenes and animations can be very laborious, but with the Qt Quick API it becomes very easy to add physics to any 3D scene. The implementation is based on the established, well-tested, and high-performant PhysX engine.

Qt TextToSpeech

Qt applications support assistive technologies, such as screen readers, by default. But many applications can make additional use of text-to-speech synthesis. Announcing events or changes audibly through speech can make information more easily accessible for any user, esp in situations where attention is not constantly on the screen. We have now ported text-to-speech support to Qt 6, with only minor changes compared to Qt 5's QtSpeech module. The module supports a broad range of text-to-speech synthesizers on desktop, mobile, and embedded platforms, and we have added a QML API.

New functionality

And a lot has happened in the existing modules.

Qt Quick 3D

Support for global illumination with pre-generated lightmaps allows creating more realistic 3D scenes, using different light-sources, while keeping the performance cost at runtime at a minimum. This feature is in early technology preview, and we are looking forward to your feedback!

In addition, we have added line particles, support for specular glossy materials, more configure options for reflection probes, skyboxes, custom materials, and textures to the toolbox.

Qt Quick Item Views

We have added more functionality to Qt Quick's TableView and TreeView types. Users can now use keyboard navigation, and select rows and columns. Application developers have more control over cell positioning, animations, and expanding and collapsing tree nodes.

Smoother animations in Qt Quick

In addition to improvements under the bonnet that make Qt's threaded render loop automatically handle broken vsync throttling, we have added a new FrameAnimation animation type that allows to run your code in sync with the animation frames.

QQuickWidget with full RHI support

With QQuickWidget you can build application user interfaces where Qt Quick and Qt Widget elements coexist. Until now this required using OpenGL. For Qt 6.4 we redesigned the class from the ground up, and now QQuickWidget is functional with all supported graphics APIs: Metal, Vulkan, Direct3D 11, in addition to OpenGL.

Serve data securely with QSslServer

Qt's network module has made it easy to write efficient TCP servers, and with Qt 6.4 we are making it just as easy to write servers that communicate over TLS.

Qt Multimedia

We have added an FFMPEG-based multimedia backend, which provides consistent audio and video functionality on all platforms. For video playback we have improved the color space handling and HDR support, and applications can inject subtitles to QVideoFrames.

A new feature under technology preview is support for spatial audio. You can now create three-dimensional sound scenes, where Qt emulates a virtual room with sound characteristics based on the size of the room, the material of the walls and floor, and the position of the listener. This feature is in technology preview.

Useful new features in Qt Widgets

QFormLayout makes it easy to build user interfaces for capturing structured user input, and QWizard is a classic solution for guiding users through a complex task over a sequence of steps. For Qt 6.4 we have added APIs to control the visibility of rows in a formlayout, and to jump to any page in a wizard. Builders of complex applications with many keyboard shortcuts will find the small addition of an optional clear-button to QKeySequenceEdit useful.

QML

Better support for value types makes it easier, and cheaper, to expose structured data from C++ to QML. Value types, and lists of value types, can be used for properties without the overhead of QObject-wrappers.

On the tooling side, you can look forward to the QML language server providing real-time feedback in your QML-enabled IDE. And the QML linter now can identify inefficient or improper usage of Qt Quick and Qt Quick Controls and generate warnings at build-time.

The QML Type Compiler is now enabled by default, and can compile more QML into C++.

The long tail

In addition to the above, a lot of work has gone into making it easier to work with string literals in your code. QStringEncoder and QStringDecoder now support all codecs supported by ICU (as long as Qt has been built with ICU support). Interoperability of Qt's date and time classes with std::chrono is improved, and Markdown is now supported as input and output when working with QTextDocuments.

Developers targeting the Android platform will find it easier to call Android APIs from C++ using the new variadic template overloads of various QJniObject and QJniEnvironment methods.

Commercial add-ons

If you are a commercial license holder, then you can download the Qt VNC Server as a technology preview. It works on top of Qt 6.4, and allows you to share any Qt Quick application with a VNC-compatible client.

The QML Script Compiler is part of the commerical Qt Quick Compiler Extensions, and with Qt 6.4 it can generate C++ code for operations on lists of value types, and generates better code for type conversions.

Qt

Versienummer 6.4
Releasestatus Final
Besturingssystemen Linux, macOS, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11
Website Qt
Download https://www.qt.io/download-qt-installer
Licentietype GPL

Door Bart van Klaveren

Downloads en Best Buy Guide

30-09-2022 • 14:25

11

Bron: Qt

Update-historie

10-'23 Qt 6.6 1
09-'22 Qt 6.4 11
05-'21 Qt 5.12.11 0
05-'21 Qt 6.1 4
12-'20 Qt 5.15.2 1
09-'19 Qt 5.13.1 0
02-'19 Qt 5.12.1 0
12-'18 Qt 5.12 LTS 0
10-'18 Qt 5.9.7 5
06-'18 Qt 5.11.1 0
Meer historie

Reacties (11)

11
11
8
0
0
1
Wijzig sortering
absoluut fantastische software, met enortm veel mogelijkheden en addons, msys2.0 installatie, compileren voor windows en linux (Apple nooit geprobeerd).
Eens. Maar met elke nieuwe versie van C++ wel weer wat minder relevant. De Standard Library heeft veel taken van Qt overgenomen (en platform independent geimplementeerd) sinds zijn start (threads, fixed size variables, etc.)

Neemt niet weg dat ik het nog steeds graag gebruik. Qt6.4 fixed veel qua QML modules tooling.

Ik ben wel bang dat Qt waarschijnlijk heel erg laat gebruik gaat maken van C++20's modules.
Qt is van origine een cross platform UI toolkit. Uit bittere noodzaak hebben ze zelf allerlei abstracties moeten maken omdat C++ toen nog bijzonder slecht cross platform te compileren was.
Nu dat een stuk beter is, is dat gedeelte van Qt minder relevant. Echter blijft het een geweldige (cross platform) UI toolkit.

Ik ontwikkel al een tijdje niet meer in C++, maar ik kon toen der tijd echt geen UI toolkit vinden waarmee je zo fijn kon ontwikkelen als Qt. Zelfs als cross platform geen requirement is zou ik nog voor Qt hebben gekozen.

Enige jammere aan Qt vind ik de ondersteuning voor iOS. Qt voor iOS is niet beschikbaar icm LGPL 3, maar daar kom je pas te laat achter. Want het werkt allemaal wel, maar dat is dus illegaal omdat je niet kan voldoen aan de voorwaarden van LGPL als je je app in de appstore van Apple publiceert. Oplossing: insert money (in de vorm van een comm. license). Lekker dan.
Qt is als UI toolkit best ver. En cross platform is een enorme plus. Maar zodra cross platform geen vereiste meer is, zie ik weinig redenen meer om nog aan C++ vast te houden. Misschien is Qt als UI toolkit nog een erg sterk aanbod op Mac of op Linux (weet ik eerlijk gezegd niet). Maar op Windows loopt Qt wel lichtjaren achter op bijv WPF.
True, daarom ontwikkel ik dus ook niet meer in C++ :)

Misschien had ik Qt moeten omschrijven als de (naar mijn mening) beste C++ UI toolkit die ook nog eens cross platform is.
Ik zie QT nou niet als een compatibility layer voor de stdc++ library, maar eerder als een UI toolkit die cross-platform hoog in het misson statement heeft staan. Dan krijg je vanzelf veel wrappers en dingen vanwege alle platformen die je support.

Als je minder en minder de Qt dingen doet en meer met de (inderdaad steeds beter wordende) C++ standaarden, dan krijg je opeens problemen als je iets moet compilen voor Android wat nog een oude g++ cross compiler gebruikt of zo, of je wil iets compilen met MSVC van jaren terug (om wat voor reden).

Ik kom nog uit de tijd van voor MSVC 2010, en toen was Qt heerlijk om mee te werken, ook in dingen zoals hash-maps en unicode strings en zo. Ja, dat is tegenwoordig wel anders in wat voor taal dan ook, maar ik voel me nog steeds erg comfortabel als ik een hoop Qxxxx objecten zie in code ;) .
" Qt, uitgesproken als cute"
sut? kut? kuu-te?
Wellicht beter om een nederlands wordt te gebruiken of de zin te veranderen in
" Qt, uitgesproken als in het Engelse ' cute' ".
@tw_gotcha : Mee eens!
" Qt, uitgesproken als cute"
sut? kut? kuu-te?
Weet niet wat je er allemaal van wil maken, maar in geval van stuikelen --> [kjuːt]
Hiervoor kan je desgewenst terecht in het desbetreffende topic, al vrees ik voor niet bijzonder bijval in deze óver-logische ... ;)
Wellicht beter om een nederlands wordt te gebruiken of de zin te veranderen in ...
Juist ...
Ik spreek het altijd uit als Ku-té. Dus zoals de letters die daar staan, en op zijn Nederlands.

Ik heb het altijd raar gevonden om een afkorting van twee letters uit te spreken als iets wat langer is (cute).
Dat heb ik ook altijd gedaan, wist niet beter. Maar als je eenmaal leert hoe je het hoort uit te spreken ben ik toch ook maar overstag gegaan. Hoewel ik mezelf nog regelmatig betrap op de verkeerde uitspraak..
Ik ben eerder geneigd om "cutie" te zeggen ipv "cute"

Op dit item kan niet meer gereageerd worden.