Qt Application Framework

Qt is a cross platform application framework. It is primarily designed for c++ coding. However, there are also various ways to access it using Python. And it is in fact quite popular as a way to build GUI interfaces for Python applications.

Qt allows you to develop your application for cross platform deployment from a single code base. This is very important in todays world. It is also extremely well documented. It is available in commercial as well as open source releases. With a huge base of existing users and a vast array of legacy applications built using it, you have some assurance that it will continue on into the future in some form. It encompasses desktop applications to mobile devices to embedded and connected devices.

I briefly discussed some personal history associated with developing for Qt as well as platform longevity issues you should probably think about in a previous post.

Qt is currently at version 5.12 as far as long term stability releases go (5.15 planned for end of May 2020).  The upcoming version 6 roadmap seems to be playing out as as we speak, with the goal of end of 2020 for first Qt 6 release.

So, let's dive right into the Qt 6 roadmap, because the reality is that whatever you might think about building with Qt today is very quickly going to be influenced by that roadmap (hopefully in a good way, not in a 'why does my existing code no longer work properly way').

So what is Qt 6 promising.
Clean up QML
Support next generation graphics
Unifying the graphical tooling options
Enhancing the C++ apis
Better language support (Python, WebAssemby)
Compatibility with Qt5 (although some things will break)
Platform longevity for the next decade

So why should you care about all of this?

Let's dive into some big issues that are currently looming for developers. Like Apple for example, who are working very hard to kill off industry standard OpenGL as successfully as they killed off their own Quicktime api. Leaving the entire digital art and digital media and content development software communities in disarray in the process.

And in fact late stage Qt4 and all of Qt5 depends very heavily on OpenGL.  I brought this issue up several years ago in Qt forums and directly at the Qt Company and was not given very reassuring answers at the time.  Fortunately that has changed with the Qt 6 roadmap. They are taking this very seriously as they should.

Qt6 introduces a new layer abstracting graphics APIs called Rendering Hardware Interface.  Things like QPainter and the QT Quick and Qt 3D support will all live on top of this new layer.

The Qt Shader Tools will allow for cross-compiling shaders at compile and runtime.


Things that should make you happy:

This quote was good to hear from my perspective.  Again, i've lived through Qt4 - Qt5 - Qt6, and this was not a primary consideration in the early stages of Qt5 development at Nokia.

"The desktop market is at the root of our offering and is a strong and important market for Qt. It is where most of our users get the first contact with Qt and forms the basis of our tooling. Keeping it healthy and growing is a pre-requirement to be able to grow also in other markets."


Another good vision quote that directly relates to some of the things we keep hammering on here at HTC.

"user interfaces at the high end of the device spectrum will continue to increase in complexity, containing thousands of different screens and many applications. Merging 2D and 3D elements into one user interface will be common, as will be the usage of augmented and virtual reality.

Elements of artificial intelligence will be more commonly used in applications and devices, and we will need to have easy ways to integrate with those."

Here's another good quote that made me laugh (and cry).

"QMake as the build system used in Qt 5 has lots of quirks and limitations."

Speaking from personal experience, it's great when it works, and it is beyond frightening when it doesn't, and if you are trying to keep legacy code going the quirks start to become potentially life threatening issues.  If you aren't familiar with Qt, it is build on this signals-slots notion that requires additional code to be auto-generated by the QMake system into MOC files to support all of that good stuff.

So yes, we live in exciting times. Things are changing. But you already knew that.


Here's some more information on the technical vision of qt 6.

Here's the entry point into the Qt Commercial development world.
Here's the Qt wiki.

Comments

Popular posts from this blog

CycleGAN: a GAN architecture for learning unpaired image to image transformations

Pix2Pix: a GAN architecture for image to image transformation

Smart Fabrics