Examples of using Qt in product development.

At the core of our expertise lies the harnessing of the powerful Qt framework to provide a diverse array of services:

Graphical User Interface (GUI) Development: Our proficiency shines in crafting user interfaces through both widget-based UI and QML-based applications. This ensures that your software not only functions seamlessly but also presents an intuitive and visually appealing front-end.

Business Logic and Non-GUI Modules: We are adept at developing robust business logic and non-GUI modules using a spectrum of Qt tools such as Qt Network, Qt SQL, Qt XML, State Machine Framework, Qt DBUS, and Qt gRPC. This ensures that the functionality of your application is of the highest quality.

Qt-Powered Microcontrollers (MCUs): Our knowledge extends to Qt-powered MCUs, enabling us to create robust applications for embedded devices. This expertise guarantees efficiency and top-notch performance even in compact hardware.

Wearables and Portables: Special emphasis is placed on delivering an exceptional user experience (UX) for wearables and portable devices. We ensure that your application functions seamlessly on these platforms, providing users with a satisfying and hassle-free experience.

Performance Optimization: We implement a comprehensive approach to performance optimization, incorporating software and hardware acceleration, memory optimization, and lightweight UI design. This guarantees that your application runs efficiently across a variety of devices, enhancing the overall user satisfaction.

Development Tools: To streamline the development process and cater to your project's specific needs, we employ a diverse range of Qt app development tools. This includes the use of Visual Studio, XCode, Qt Creator IDE, Vim, and Emacs, ensuring efficiency and precision in the development lifecycle.

undefined

Qt, often pronounced as "cute," is a powerful and versatile cross-platform C++ framework widely used for developing applications with graphical user interfaces (GUIs). Originally developed by Trolltech and now maintained by The Qt Company, Qt provides a comprehensive set of tools and libraries that facilitate the creation of robust and feature-rich software.

Cross-Platform Compatibility: Qt enables developers to write a code once and deploy it on multiple platforms without major modifications. This cross-platform capability allows for the development of applications that run seamlessly on various operating systems, including Windows, macOS, Linux, Android, and iOS.

Extensive Libraries: Qt comes with a rich set of libraries that cover a wide range of functionalities. These include libraries for networking (Qt Network), database operations (Qt SQL), XML handling (Qt XML), state machines (State Machine Framework), inter-process communication (Qt DBUS), and more. This extensive library support simplifies the development process and accelerates time-to-market.

Open Source: Qt is available under both commercial and open-source licenses. This open-source nature has contributed to its widespread adoption and a vibrant community that actively supports its development and improvement.

We want to show you examples of using QT. Here are a few of our cases developed by the Embrox team

SCANNING SUITCASE  

The SCANNING SUITCASE device is utilized in agricultural fields during harvesting, primarily serving to identify pickers and record harvest and packing times. All the gathered data is seamlessly uploaded to the cloud.

Key Features:

  • Impressive full-day battery life.
  • Eliminates the need for the OpenCV library.
  • Backlights QR codes using LEDs for enhanced visibility.
  • Configurable scanning algorithm through a developed configuration file.
  • High-speed measurement capabilities.
  • Over-the-air (OTA) firmware updates facilitated through the mobile application.

Approach:

The Embrox team opted for the Raspberry Pi 3 Model B with the Arducam Multi-Camera Adapter to accommodate multiple cameras.

A straightforward approach involving a transistor switch was proposed for LED strip control, ensuring efficient QR code capture while conserving power.

The electrical engineering team devised a custom battery gauge and power PSB, while the mechanical engineering team recommended incorporating mirrors to reduce the device thickness.

All cameras operate in multithreading with asynchronous handling. The scanned data is transmitted to the mobile application via Bluetooth connection, subsequently reaching the server for further processing.

undefined

WINDOW DESIGN CREATOR 

The final product is a comprehensive Client-Server solution tailored for the computer-aided design in the realm of doors, windows, and blinds. This application empowers users to create local orders, subsequently transmitting them to the server for production. Notably, an offline mode enables local work without the need for a server connection.

Key Features:

  • Client Module: Efficient customer data management, client grouping, and a discount management system.
  • Orders Module: Streamlined creation and validation of orders, product compatibility determination, precise price calculation, and currency conversion.
  • CAD Module: Robust sketch-based product design, creation of new products based on templates, a powerful toolset for object drawing and modification, an array of ready-to-use shapes, static and dynamic restriction mechanisms, thermo-coefficient calculation subsystem, project tree (object hierarchy), individual property-set per item type, history of project changes, multi-project support, and customizable UI.

Approach:

Given the imperative of compatibility with Linux, Mac OS, and Windows, the Embrox team opted for utilizing Qt facilities for cross-platform application development. A meticulous analysis of existing CAD solutions, coupled with the incorporation of best UX practices, facilitated the design of a custom UI covering all functional requirements. This UI adheres to modern software editor standards, featuring a ribbon panel with diverse tool sections for object drawing/modifying, an object hierarchy panel, dynamic properties panel, undo/redo functionality, a history panel, and more. The implementation of dynamic restrictions, tightly integrated with server data, adds an extra layer of versatility, allowing for additional limitations in the object drawing process.

undefined

PHOTO PRINTING SYSTEM  

The Embrox team integrated an image editor, delivery management, and payment system into a single application, facilitating swift photo product creation through smartphones. Users can efficiently prepare photo packages for printing and design personalized phone cases based on their chosen format.

Key Features:

  • Seamless online payments.
  • Efficient delivery management.
  • Adaptable discounts for regular users.
  • Real-time order status tracking.

Approach:

To meet the common UX/UI requirements for Android and iOS applications, the Embrox team employed the capabilities of QT + QML for mobile application development. As the customer had specified a payment system with platform-dependent libraries, a wrapper with a unified interface for both iOS and Android systems was developed.

The API server was strategically divided into Public and Admin parts, operating independently to enhance security. Addressing the challenge of order time prediction, the integration of printer supply levels and order management subsystems proved crucial. Combining this data with business hours information enabled the implementation of a mechanism for calculating the average order processing time and designing a time prediction system for specific orders.

undefined

VISUAL PROGRAMMING IDE 

The application serves as a visual programming creator that supports states of diverse complexity, events, event handlers, and the establishment of various connections between them. This enables the design of software architecture and graphical management of program elements, moving away from textual specifications.

Key Features:

  • User-friendly toolset employing the Boxes & Arrows approach.
  • Extensive support for deep nesting.
  • Customization options for conditions, events, and event handlers.
  • Code generation for the selected programming language.

Approach:

Given that the application functions as a visual creator for constructing state diagrams and establishing connections, the initial focus was on designing a robust architecture. This approach aimed to separate the logic level from graphical representation, allowing the definition of main logic elements before transitioning to the visual aspect. Throughout the process, various UX ideas for object manipulation were proposed and successfully integrated into the editor.

Addressing the challenge posed by diverse cases of state nesting, the implementation of an optimal routing mechanism for connection lines was a pivotal aspect. Analysis of the existing approaches enabled the selection of a suitable method, which was further enhanced to meet the requirements and limitations of diagramming logic.

undefined