The cutting-edge medical devices need advancement in the User Interface(UI) to ease the access to real-time applications. Millennials working in the healthcare industry are not familiar with complex screen flow. Medical devices such as ventilators, automatic electronic defibrillators, and auto-injectors can result in severe hazard with the minutest malfunctioning in user interface related issues. Hence, improving the user interface of medical devices is significant to avoid drug overdoses, delays or difficulties in delivering medication.
Since Qt provides a seamless user experience, allowing better interaction with data while ensuring equipment reliability, medical device manufacturers prefer it over other software frameworks. Visualizing health data or integrating live camera to stream video is easier using Qt without compromising with performance and reliability.
Why Qt is preferred choice for GUI development?
- Optimizes near-native performance and speeds up the creation of 3D/2D AR/VR and touch-based UIs to a variety of screen sizes
- Once developed, it can be built and deployed as many times as needed on multiple platforms
- Cross-platform application framework and widget toolkit for developing classic embedded graphical user interface and applications on native hardware and software platforms without significant change in the underlying code
- Supports Linux, OS X, Windows, VxWorks, iOS, Android, Blackberry and others
- Easy to integrate system C libraries for interacting with the kernel
- A wide range of fonts support for better readability
- Easy and interactive IDE support for quick development without expert knowledge
- Easy cross-compile instructions to extend application support on other platforms with minimal changes
Top 3 Essentials of Qt:
Figure 1: Qt architecture diagram
- The Qt fundamentals include Qt Widgets, Qt Quick, QML, Qt Multimedia, Qt Network etc. There are a lot of add-on modules which can be used for specific purpose and are not available on all target platforms
- The third-party libraries can be easily compiled on any platform and used instantly. Though it provides a binding for different programming languages like Python, Ruby, and Perl, the applications are developed using C++ and enhanced with extensions. It generates C++ binaries which can be deployed on different platforms easily
- Qt provides a diverse range of standard user interface elements, called widgets, for each supported platform. Widgets can be utilized as containers for supplementary widgets, as windows, and as regular controls that the user interacts with. They can also be made to appear partially transparent and styled with Qt Style Sheets. The support for touch input and gestures enable widgets to be used to create intuitive user interfaces for touch-enabled devices
Qt for Embedded Graphics:
Figure 2: Qt for embedded graphics
- Qt uses QPainter for all graphics operations. By using the same APIs, the code can be reused again on multiple platforms. QPainter uses one of the paint engines implemented in QPaintEngine API to do the actual painting
- It improves the graphics performance of Qt application. The graphics operations supported on a specific hardware is then sent to the GPU and from there it is sent to the framebuffer. In the end, the operating system sends the paint updates to the display
- The unsupported graphics operations are taken care of by the CPU. These features can help in overcoming the runtime challenges
How VOLANSYS utilize the effectiveness of Qt:
- We helped one of the customers to resolve critical hardware and OS issues which disabled the customer to continue implementation on Android BSP. We switched to Linux on i.MX platform and selected Qt for UI development because it offers a wide range of inbuilt libraries and easier development using third party libraries. The libraries used in the project like QtMultimedia, QtHttp, QtMQtt etc. The user interface developed in android was replicated in Qt within two to three months
Figure 3: Transitioning from Android to Qt
- We utilized signal slot feature of Qt in connecting the different modules for catching signal impulsively. This is asynchronous and event-driven programming. Using this feature, we were able to connect QRScanner with another module which made processing signals task much easier. An API called processEvents() from the QtCoreApplication library was also used for processing all kind of event while using the “while” loop where we were waiting for a certain condition to be met and then proceed further. This was used to avoid blocking within a piece of code
- We used GStreamer for streaming video on the device within the Qt application. The QtGstreamer is a set of libraries and plugins used for binding C++ application of Qt with GStreamer APIs. This was also used in this project to read a media file in one format, process and export it into another format file. This was used to save the video clips in the device in mp4 format and later playing the same recording. QtGstreamer library and its APIs made it quite easier to cope up with the difficulties during the streaming of video on devices
About Author: Shrusti Nanda
Shrusti is associated with VOLANSYS Technologies with hands-on experience in the development of C/C++ applications. She is passionate about working with C/C++ based IDEs and similar programming. She possesses splendid exposure in native and cross-platform embedded based UI application with QT. Being a quick learner, she always looks forward to the opportunities to bring better solutions to the table.