C

Qt Quick Ultralite Tools

The Qt Quick Ultralite toolchain is built around CMake. The build process starts with the CMake configuration phase where, the application's CMakeLists.txt and Qt Quick Ultralite package's CMake files are used to prepare the build files. The actual build process depends on the selected CMake generator.

Build process demo

The Qt Quick Ultralite build process is demonstrated with an example application that connects over Bluetooth to a mobile phone and fetches a contact list. The project includes the following files:

FileDescription
Main.qmlDefines the main application view
QML filesDefines the application UI.
C++ sourcesDefines custom data types for the visual items, such as a ListView.
C/C++ sources filesDefines the application logic.
main.cppDefines main(), which uses Qul::Application for starting Qt Quick Ultralite.
ImagesImage assets used by the application.
FontsFont files used by the application.
CMakeLists.txtA project configuration file

The following diagram provides an overview of the example application's build process:

Generating code with Qt Quick Ultralite tools

Qt Quick Ultralite provides tools that generate the required additional code. For more information, see qmlinterfacegenerator, qmltocpp, and fontcompiler.

qmlinterfacegenerator

qmlinterfacegenerator parses C++ header files for custom QML elements. For example, this is done to provide a connection between QML and application business logic layers.

qulrcc

The qulrcc resource compiler generates optimized raw data buffers out of the source images. The qul_add_resource CMake command adds them to the build and set_source_files_properties can be used to configure resource properties.

The optimization process depends on the platform and the configuration. For example, optimization can result in lowering color depth, replacing the image with an alphamap, removing larger transparent areas, and swizzling.

The resource configuration is passed to qulrcc as a JSON file that CMake generates. The resource compiler informs qmltocpp about available resources by generating a separate JSON file with resource descriptions.

qmltocpp

The qmltocpp tool provides the following functionality:

  • It builds a QML object model out of qml files provided with qul_target_qml_sources. Input for the qmltocpp tool is as follows:
    • Application's QML code.
    • The files that are generated by qmlinterfacegenerator
    • The Qt Quick Ultralite interface files that correspond to the Qt Quick QML elements or controls. For example, Item.qml, Rectangle.qml, Image.qml, ListView.qml, PropertyAnimation.qml, Slider.qml, and Button.qml.
    • The resource description generated by qulrcc.
    • Application's QML code. In the example, the QML code contains Main.qml, Contacts.qml, and ContactsDelegate.qml.
    • The files that are generated by qmlinterfacegenerator
    • The Qt Quick Ultralite interface files that correspond to the Qt Quick QML elements or controls. For example, Item.qml, Rectangle.qml, Image.qml, ListView.qml, PropertyAnimation.qml, Slider.qml, and Button.qml.
  • It analyzes graphical assets that are used in the QML application code and generates optimized raw data buffers out of them. In the example, qmltocpp generates avatar.png. The optimization process depends on the platform, configuration, and usage. For example, optimization can result in lowering color depth, replacing with alphamap, removing outline transparent areas, and swizzling.
  • It analyzes usage of text elements and builds the FontMeta database. The database provides input for the fontcompiler tool.
  • It replaces the JavaScript code with generated C++ code.
  • It generates bindings, states, and transitions code.
  • It combines all above and generates C++ header and source files.

fontcompiler

fontcompiler generates raw font glyphs that are embedded into application code. The embedding is done on basis of the font metadata that is created by the qmltocpp tool. The font metadata contains the following information:

  • glyphs that are generated for characters that are potentially displayed on the application user interface.
  • desired font.
  • font style, such as size, weight, and decoration.

The outcome of the fontcompiler tool is found on the qul_fonts.cpp file.

Compilation phase

After the additional code is generated, the compilation starts. Input for a compiler is as follows:

  • The application's c++/c code.
  • The generated files.
  • The Qt Quick Ultralite public and internal headers. For example, the headers are provided for templated classes, such as Property, Signal, or for items, such as Rectangle and Image.

Linking against Qt Quick Ultralite libraries

Finally, you need to link statically against the Qt Quick Ultralite libraries. Depending on your target platform, linking provides the following outcome:

  • An application executable if your target platform is desktop.
  • An image file, such as *.elf, *.hex, *.run, that you can flash into your target device on all MCUs platform.

Available under certain Qt licenses.
Find out more.