Getting Started with Qt Bridge for Figma: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 19: Line 19:
== Advise for designing in Figma ==
== Advise for designing in Figma ==
When designing in Figma for exporting directly to QML for Qt4Mcu you have to keep the structure minimal and avoid unnecessary items because they come with a cost of memory and performance. Do not use variants to define screens that look really different. Use components instead and only change the visibility if you want to use variants.
When designing in Figma for exporting directly to QML for Qt4Mcu you have to keep the structure minimal and avoid unnecessary items because they come with a cost of memory and performance. Do not use variants to define screens that look really different. Use components instead and only change the visibility if you want to use variants.
Also the number of states should not be excessive, because a large number of states (usually over 10) can impact performance and maintainability.


Remember that merging layers will raster items into images during export, and memory consumption can be huge.
Remember that merging layers will raster items into images during export, and memory consumption can be huge.

Revision as of 09:00, 12 December 2024

The following guide is an introduction to the Qt Design Studio and it's integration with Figma through the Qt Bridge. The focus is on Qt for MCU project development. If you are new to the Qt Design Studio, please visit the Qt Design Studio Documentation for detailed installation instructions, getting started guide and tutorials.

Qt Bridge for Figma

Qt Bridge for Figma is a plugin that allows you to export projects from Figma and ultimately convert them into executable QML code in Qt Design Studio. The plugin has a number of settings that allow you to customize the export process or inject QML code into QML components. It also has a special Qt for MCUs mode that respects MCU limitations and provides useful hints during design creation.

If you are interested in the technical details of the Qt Design Studio and Figma integration, read the Qt-Bridge Metadata format article and watch the Qt Bridge Plugins in Depth video.

Getting Qt Bridge for Figma

Note: Qt Bridge for Figma is available under the Qt Design Studio Enterprise license

  1. Go to the plugin page
  2. Click on 'Open in Figma' (it may ask you to to log in to your Figma account)
  3. Open in... -> Playground file (or one any of your recent projects)
  4. Plugin is now available via main menu or over actions (Ctrl + K)
Qt bridge figma main menu.png
Qt bridge figma actions.png

Advise for designing in Figma

When designing in Figma for exporting directly to QML for Qt4Mcu you have to keep the structure minimal and avoid unnecessary items because they come with a cost of memory and performance. Do not use variants to define screens that look really different. Use components instead and only change the visibility if you want to use variants. Also the number of states should not be excessive, because a large number of states (usually over 10) can impact performance and maintainability.

Remember that merging layers will raster items into images during export, and memory consumption can be huge.

Using opacity and scaling usually has a severe performance impact on MCU hardware

Projects for MCUs

MCU platforms have limited resource availability, so getting the most out of them is critical. To achieve the best results, we have introduced Qt Quick Ultralite, which is specifically designed for embedded platforms. However, there are differences between the regular Qt library and Qt Quick Ultralite (you can read more about them here). When working on a project for MCUs, you need to be aware of these limitations. To help you best prepare your project before exporting to Qt Design Studio, we have added a special mode to Qt Bridge for the Figma plugin. 

Note: To learn more about limitations, see Known issues or limitations section.

Export target: Qt for MCUs

The MCU mode in the Qt Bridge for Figma has two main purposes:

  • preset plugin settings so that customization of the export process is compatible with the Qt Quick Ultralite
  • enable MCU-specific checks, that provide a valuable information when using properties or effects that can't be reflected in the Qt Quick Ultralite
Qt bridge mcu export target.png

If you want to see Qt for MCUs warnings:

  1. Go to the Settings
  2. Set the Export target to 'Qt for MCUs'
  3. Select an item in Figma, that you want to verify
  4. Check Home -> Node Info

Note: Node Info can also display non-MCU related information, such as rasterization tips. These are also available in a regular mode (Export target: Qt)

Qt bridge node info.png

Export Settings

Qt Bridge for Figma has a number of settings that allow end users to control the export process and customize the QML code generated in Qt Design Studio. You can find out how to use the available options by:

Sometimes a particular setting may be disabled (grayed out). This means that you cannot use it in a certain context. For example: the 'Start screen' option can only be applied to the top level components or frames, 'Export As' may be disabled for instances of the components, Design Effects cannot be applied in the MCU context etc. To learn more about limitations, see the Known issues or limitations section.

Workflow

The workflow is quite simple, there are two main steps between the Figma project and the running QML-based application:

  1. Prepare and export project metadata using Qt Bridge for Figma
  2. Import the metadata archive into a project created in the Qt Design Studio

Exporting project from Figma

Whenever you are ready to export your MCU project to the Qt Design Studio:

  • make sure you've set the Export target to 'Qt for MCUs'
  • go through all groups and layers and specify the expected settings
  • evaluate (try to apply or acknowledge) the hints presented in the 'Node Info' section
  • click the 'Export' button (Home tab) and save the export file
  • review the log generated during the export process
Qt bridge project and export button.png
Qt bridge export console with save file.png

Importing project into Qt Design Studio

Create a new project for MCUs and import .qtbridge file prepared in a previous step. Click on the + in the Assets section or drag and drop the file into the Qt Design Studio window.

Ds import assets.png

Note: If you don't see the Assets section, you can enable it in View -> Views -> Assets.

Detailed instructions on how to import assets can be found here.

Ds import console.png

Watch the import console to see if any warnings or errors occur during the import process. Some problems can be fixed automatically (such as non-unique IDs), but if you encounter errors, it's recommended that you fix them in the source project.

Ds import assets error.png

If all goes well, you should be able to see your assets, automatically generated QML components, and preview them.

Ds qml runtime with designer and code.png

Project organization in Figma

To achieve the best results and avoid unexpected problems during the export-import process, follow the Organizing Designs guidelines when developing a project in Figma.

Setting up the Qt for MCUs SDK in Qt Design Studio

The key concept behind the Qt Design Studio is to bridge the gap between designers and developers. The built-in code editor allows you to customize your project in any way you like. Due to MCU platform limitations, you may find yourself in a situation where the QML code preview in the Qt Design Studio works perfectly, but the code is not compatible with MCU platforms. To avoid this, you can optionally configure the Qt for MCUs SDK in the Qt Design Studio to trigger the qmlprojectexporter for the desktop platform on each run, ensuring that the QML code is compatible with Qt Quick Ultralite.

Note: Qt for MCUs is available under certain licenses. Install Qt for MCUs using the Qt Online Installer, which you can find on your Qt account page.

Ds install qt for mcus.png

Note: we recommend using the latest available version of Qt Design Studio and Qt for MCUs. If that's not an option, see versions compatibility matrix.

In the Qt Design Studio, go to the Edit -> Preferences -> Devices -> MCU and set the path to the recently downloaded SDK.

Ds mcu sdk setup.png

Save the settings and restart Qt Design Studio. The next time you run the MCU project, check the Compile Output console (Alt + 4), qmlprojectexporter will ensure that the QML code is valid for MCUs.

Ds qmlprojectexporter error.png

For more information on developing applications for MCUs, see Developing Applications for MCUs.

Example projects

You may notice that some features in the Qt Design Studio interface are grayed out (disabled). This is due to the limitations of the MCU-specific projects, which are described in Projects for MCUs. To check which features are available for MCUs, see Qt Design Studio Features for MCU Projects. If you want to get some practice with MCU projects and Qt Design Studio, check out the following MCU-specific sample projects:

  • Washing Machine
  • Thermostat Demo

You can find them on the Welcome page, in the Examples section.

Known issues or limitations

These are the most common limitations you need to be aware of when working on MCU projects in Figma with the intention of later exporting them to Qt Design Studio:

  • rotation is only allowed on texts or rasterized nodes
  • stroke properties are not supported
  • texts cannot use letter spacing, line height and paragraph height properties
  • layers with effects can either be rasterized and exported as image assets, or effects can be skipped (cannot use Design Effects)
  • only linear gradients are supported
  • shapes cannot be exported as SvgPathItem components

A summary of known issues or limitations in the Qt for MCUs can be found at Known Issues or Limitations.

The public bug tracker is a place where all user-reported issues can be tracked: Qt for MCUs, Qt Design Studio, and Qt Bridge for Figma.

If you have a problem that is not listed above, you can create a new ticket.

More info

If you want to learn more, a good place to start is the Qt Academy with the following courses:

Also check out our docs, wiki page, and tutorials posted on Youtube: