Skip to content

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. Read More »Responsive QML HMIs with Scaling

Offshoring Must Be About Finding Good Developers

Over the last 1.5 years, I worked with two Western automotive tier-1 suppliers who use near- and far-shoring to develop most parts of their infotainment systems. Both suppliers use offshoring to reduce their development costs. But how can these offshoring projects be cheaper if a good developer is easily 10-20 times more productive than an average developer?
Read More »Offshoring Must Be About Finding Good Developers

What Makes a Developer Truly Professional

QA finds many bugs that are very easy to catch. Builds contain warnings and runs error messages and even violated assertions. Coding guidelines and good coding practices are ignored. Unit tests are only written to drive line coverage up. Acceptance tests are missing. Code is committed although some tests are failing. Releases are prepared manually. All these symptoms are signs for unprofessional developers at work. So, what makes a developer truly professional?
Read More »What Makes a Developer Truly Professional

QtCreator – Search & Replace with Captured Texts

I wanted to replace many occurrences of

g_theme.themeDisplay(100, 80, 65)

by

g_theme.thSz([100, 80, 65])

in many QML files. The values of the three integer arguments varied from occurrence to occurrence. What I hoped for was that QtCreator’s search & replace function for regular expressions would support captured texts – the three arguments.
Read More »QtCreator – Search & Replace with Captured Texts

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.
Read More »Building HMI of Harvester with Qt

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.
Read More »Revolutionary HMI-Design of Forage Harvester

One Command To Install All Ubuntu Packages for Qt 5 Build

You have just installed a fresh Linux system. The next step is to build Qt from sources. You install the required Linux packages, configure and build Qt. After an hour or so, your build fails because a package is missing. You must start over again … and again … Wouldn’t it be nice to have a single command that installs all the required Ubuntu packages and save all these needless iterations?
Read More »One Command To Install All Ubuntu Packages for Qt 5 Build