More Reasons For Not Using Web

The Qt Company published a guest post “Qt QML v HTML5 – a practical comparison” and a whitepaper by the Austrian Qt consultancy Sequality. Sequality had one developer writing a simplified application for controlling a bottling plant first with Qt and then with Web (AngularJS). The developer had 160 hours for each implementation. The application had to run on a tablet, a PC and a Raspberry Pi 3 with different resolutions.

Here are my favourite findings of Sequality’s experiment.

  • The developer finished considerably more functionality with QML than with Web.
  • Higher efforts to use OpenGL acceleration for Web: “Enabling GPU rendering on Chromium […] doesn’t fix the HTML5 demo’s performance problem. In fact, the CPU is utilized even more, which leads to overheating.”
  • Higher efforts for testing Web: “The fact that HTML5 applications can be executed on a number of platforms – and a number of browser engines on each platform – multiplies the testing time correspondingly.”
  • Availability of a certain Web technology in 10 years: “Modern HTML5-based applications that use frameworks like AngularJS are relatively new and undergo changes from year to year – a valid question is whether AngularJS (or any other currently trendy Javascript-library) will still be a relevant HTML5-technology in 10 years.”

Using Qt 5.6 and Later under LGPL

Up to Qt 5.3, things were pretty simple. Most modules were under LGPLv2.1 with the exception of some commercial modules. Starting with Qt 5.4, new Qt modules were published under LGPLv3 and old modules additionally under LGPLv3. With Qt 5.6, we now have quite a patchwork of modules under different licenses. Qt 5.7 will drop LGPLv2.1 completely. Some companies stay on Qt 5.3, because they are afraid of LGPLv3. Let me bring some clarity into this patchwork and explain how you can still use Qt under LGPL and sleep well.
Continue reading

Running a QML HMI on an ARM11 without OpenGL

Recently, I brought up Qt 5.5 on a Freescale i.MX35, which has an ARM11 CPU but no OpenGL support. Despite the missing OpenGL, I wanted to write the HMI with QML. The additional challenge was that the cross-compilation toolchain was 32-bit, but I wanted to use my standard 64-bit Ubuntu. I’ll show in this post how to set up the 32-bit toolchain and rootfs on my 64-bit Ubuntu machine, how to configure and build Qt 5.5 from the sources, and how to run a hello-world application written in QML on the i.MX35. Continue reading

Responsive QML HMIs with File Selectors

In my previous post, I have shown how to use scaling to adapt QML HMIs to different screen sizes and formats. We reach the limits of scaling if we must change the structure of the HMI or if the HMI must be pixel-perfect. The solution to these problems is to provide a different implementation for each screen size. Switching between these different implementations is done with QML file selectors.
Continue reading

Responsive QML HMIs with Scaling

The HMIs of in-vehicle infotainment systems, TVs, phones and many other systems must adapt to different screen resolutions and formats. This adaptation should happen with as little duplicate effort as possible. The simplest way of doing this for QML HMIs is to scale the values of all x, y, width, height, margin and border properties in proportion to a reference resolution. Based on the HMI of a music player, I’ll show you how to do this by changing only the screen width and height. Continue reading

Building HMI of Harvester with Qt

At Qt Developer Days 2014 in San Francisco, I gave a talk with title “Case Study: Driver Terminal for Forage Harvester”. I describe the technical challenges and their solutions when I helped Krone to develop the driver terminal of their new BigX 480/580 forage harvesters with QML, Qt and C++. Here are the slides of my presentation and an abstract.
Continue reading

Revolutionary HMI-Design of Forage Harvester

Agricultural OEM Krone bets on Qt software library for development of their terminal / First prototype read in less than three months

Big X in maize harvest at day time

Big X 480 in maize harvest

585 horsepower, 15.6 litres engine displacement and an up to 9 metre wide cutterhead – forage harvesters are among the most powerful agricultural machines. It takes a lot more technology and know-how to drive such a vehicle than a car. The driver terminal of a forage harvester must process information from more than 30 components like motor, cutterhead, metal detector or grinder within tenths of a second. The terminal additionally provides a diagnosis system. The agricultural OEM Krone from Lower Saxony has built all these functions into the touch-screen terminal of its forage harvester Big X 480/580. The HMI software of the terminal was developed with the GUI and application library Qt.
Continue reading

Why Use Qt for Embedded Systems

When my customers develop embedded systems, they face similar challenges:

  • Challenge 1: iPhone-Like HMI
  • Challenge 2: Internet-Connected
  • Challenge 3: Running Everywhere
  • Challenge 4: Fast Time-To-Market

Using examples from different industries, I’ll first elaborate on the challenges and then on how Qt can help us to solve these challenges. These challenges are typical for nearly every industry nowadays: automotive, agricultural, medical, manufacturing, home-appliance, home-automation – to name just a few.
Continue reading