Skip to content

Qt

Applying TDD to Classes Accessing Files

We start with unit tests reading a file line by line with QFile. Unit tests accessing the file system are not considered unit tests, as they may be slow and may depend on each other in surprising ways (see A Set of Unit Testing Rules by Michael Feathers). In a first step, we encapsulate QFile in a class TextFile and provide a fake implementation representing the file as a list of strings kept in main memory. In a second step, we introduce an interface, from which the product and fake implementations derive. We can now apply TDD to classes accessing files.

Read More »Applying TDD to Classes Accessing Files
Ports-and-adapters architecture for harvester terminal with GUI, Cloud, Machine and Customer adapter.

My Talk “A Successful Architecture for Qt Embedded Systems” at Qt Day Italy 2021

Creating an architecture means answering many questions about the ecosystem, in which the Qt embedded system operates. While the questions are very similar for all Qt embedded systems, the answers and their priorities differ. So, you should be able to transfer the questions and answers from my running example, a harvester terminal, to your system.

Read More »My Talk “A Successful Architecture for Qt Embedded Systems” at Qt Day Italy 2021
Window manager showing split view of home (left) and of turbine cam (right).

Architecture of Qt Embedded Systems: Single vs. Multiple GUI Applications

Our quest for a successful architecture of a harvester terminal continues. In this episode, we discuss when a system with a single application is good enough and when a system with multiple applications and a window manager is the better choice. Sometimes, a single-application system with a window manager is just the right choice.

Read More »Architecture of Qt Embedded Systems: Single vs. Multiple GUI Applications

Using Qt 5.15 and Qt 6 under LGPLv3

Nearly exactly 5 years ago, I wrote my first article about Using Qt 5.6 and Later under LGPL. The trigger then was the switch from LGPLv2.1 to LGPLv3 with Qt 5.6. The trigger now is the switch from Qt 5 to Qt 6. All the Qt modules under LGPLv3 5 years ago are still available under LGPLv3 – unless they have been retired. Some new modules like Charts, CoAP and MQTT were only available under Qt Commercial until Qt 5.15, but are now available under the new Marketplace license for 50-300 USD per year (no royalties). Some new modules like Quick 3D and WebAssembly are only commercially available. All in all not much changed: You can still build fantastic HMIs with Qt LGPLv3.

Read More »Using Qt 5.15 and Qt 6 under LGPLv3