Meet Qt 6.6, and more!


Dr. Cristián Maureira-Fredes @cmaureir

Slides available

qtinfo.dev/gnuhealthcon23

After 3 online years

it's good to be here in person

My motivation to be here

Let's talk about the

Qt framework

  • Cross platform framework for UI interfaces, and applications.
  • Started in 1991
  • With many, many modules.
  • More info at qt.io

The 6.6 Release

  • RC: 26.09.2023
  • Final Release: 10.10.2023

Where were we? 🤔

GNUHealthCon 2022 (1/2)

GNUHealthCon 2022 (2/2)

Motivation

  • Python popularity 🚀
  • Relevance of C++ 🤝

Features

  • PyPy compatibility
  • New wheel structure
  • Embedded support
  • Tooling
    • pyside6-qml (app preview)
    • pyside6-deploy (using nuitka)
    • pyside6-project (new projects)
    • pyside6-qtpy2cpp (converter)

A few highlights

of the 6.6 release

doc-snapshots.qt.io/qt6-6.6/whatsnew66.html

Qt Graphs (TP)

QtGraphs

  • New module, replacing OpenGL based DataVisualization
  • Use cases
    • Vis of large quantities of dynamic data
    • Creation of depth maps
  • Value
    • Using QML APIs from Quick3D, using bare metal interface and acceleration through RHI
    • Customizable charts with themes, items and labels
    • Possibility to embed Qt Quick 3D effects in graphs
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/qtgraphs-index.html
    • https://doc-snapshots.qt.io/qt6-6.6/graphs-examples.html

Qt Quick responsive layouts (TP)

QtQuick.Layouts

  • Intuitive way to create responsive layouts
  • Use cases
    • Re-usable GUI implementation for different window sizes
    • Dynamic handling portrait and landscape devices
  • Value
    • Foster best practices and brand consistency across devices
    • Bring QML closer to web design standards and "mobile first" design approach
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/qml-qtquick-layouts-layoutitemproxy.html

Window capturing

QtMultimedia

  • Capture videos of individual desktop applications windows
  • Use cases
    • Record windows for specific video
    • Streaming capabilities
  • Value
    • Better control on what to capture from a screen
      • Increase safety on sharing content
      • Reduce effort on post-recording editing
      • Optimize resources usage
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/qml-qtmultimedia-windowcapture.html

OpenType fonts support

QtFonts

  • Advanced access to font shaping features
  • Use cases
    • Support OpenType features directly from Qt Framework
  • Value
    • Enable users to deliver better font experiences
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/qml-qtquick-text.html#font.feature-prop

New Text to Speech

QTextToSpeech

  • Small improvements on text to speech module
  • Use cases
    • Text to audio synthetization
    • Audio queueing
    • Querying for available voices and engine capabilities
  • Value
    • New abilities to produce read-aloud fluent interfaces
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/qtexttospeech.html

Qt Creator Improvements

Developer Experience

  • Github Copilot support
  • Integrated terminal
  • Use cases
    • Get AI help for creating code, tests or document the code
    • Run command line tasks using the terminal
  • Value
    • More productive SW development with Qt Creator
  • How to find
    • Qt Creator 11+

Permission APIs are in QML now

Many modules

  • New QML API for handling of permissions
  • Use cases
    • An app for recording audio, using BLE, etc
  • Value
    • Better UX: users get a permission request on an action
    • Permission requests just on start can be eliminated
  • How to find
    • https://doc.qt.io/qt6/qtcore-qmlmodule.html

Discard compiled QML code from the app package

QML

  • QML code fully compiled by the Qt Quick Compiler can be discarded from the app package
  • Use cases
    • Avoid access to code with sensitive IP
    • Prevent manipulations of apps
  • Value
    • Better IP protection and application integrity for Qt Quick based applications
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/cmake-source-file-property-qt-discard-file-contents.html
    • https://doc-snapshots.qt.io/qt6-6.6/resources.html#discarding-the-file-contents

QML Lint plugins (TP)

QML

  • Create custom static analysis for QML code
  • Use cases
    • Write additional rules for QML Lint
    • Post additional messages for selected languages statements in the code
  • Value
    • make QML code compliant with your company's coding guidelines ns
  • How to find
    • Check "QML Static Analysis Tutorial"

QML Language Server is getting solid

QML

  • Can be used in Visual Studio Code, and QtC 10+
  • Use cases
    • Far more for developers than just a spellchecker in Word
  • Value
    • 100% coverage of the actual QML language model
    • Interworking with other tools, like Qt Quick Compiler
  • How to find
    • Post: https://qt.io/blog/whats-new-in-qml-language-server-qmlls-shipped-with-qt-6.6
    • qmlls --help

Qt gRPC: overview of the ongoing works (TP) - (1/2)

QrGrpc and Qt Protobuf

  • Qt 6.6
    • Added support for channel and call options
    • Integrated QML-types support in code generation
    • New QML API: in discussion and under reviews
    • Support for "oneof"
    • qmake support

Qt gRPC: overview of the ongoing works (TP) - (2/2)

QrGrpc and Qt Protobuf

  • Plans for Qt 6.7
    • Improve HTTP/2 support in Qt, then Qt gRPC
    • Reduce dependencies to "gRPC" itself
    • Support more well-known types
    • Finalize QML API
    • QProtobuf conformance testing
    • gRPC interoperatibility testing
    • Review and extended/improve examples if needed

API access to more privacy and securty settings

QtWebEngine

  • Enable/disable HTML5 Fetch API
  • Read effective top-level domain
  • Disable reading from canvas to prevent fingerprinting, and more
  • Use cases
    • Have a more control on how Chromium runtime behaves
  • Value
    • Additional API covering more use cases
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/whatsnew66.html#qt-webengine-module

Dynamic Linking and Qt Loading Enhancements

WebAssembly

  • Limited support for dynamic linking in Qt for WebAssembly
  • New implementation for QtLoader.js
  • Use cases
    • WebAssembly app developer
  • Value
    • QtLoader used for landing the wasm app benefits of the new implementation (easier debugging/maintenance)
  • How to find
    • https://doc.qt.io/qt-6/wasm.html

Qt for Android

Platforms

  • Improve developer experience with Qt on Android
    • Added FileProvider support when using QDesktopServices::openUrl()
    • Use AndroidX by default
    • More Qt examples are tailored for Android
    • Android 13 is max supported version
    • Support SDK level 33 to match Play Store req.
  • Use cases
    • Mobile app dev with cross-platforms in focus
  • Value
    • Better API coverage with more use cases supported
  • How to find
    • https://doc-snapshots.qt.io/qt6-6.6/android-getting-started.html

Qt for Python

Asynchronous compatibility

Embedded wheels

Packages for aarch64

  • Targeting Raspberry Pi devices mainly
  • To be available on PyPI

Android

For license holders

Installation

Maintenance Tool

Towards a Qt flavored Python IDE

QtCreator

  • Interpreter selection
  • Virtual env creation
  • Automatic PySide installation
  • More to come

Silent features and fixes

PySide and Shiboken

How can Qt contribute

to Libre and Open Health initiatives?

Let's be in touch!

Communication channels

More platforms at wiki.qt.io/Qt_for_Python#Community

Don't forget the documentation

Meet Qt 6.6, and more!


Dr. Cristián Maureira-Fredes @cmaureir