On this page

Qt ROS2

Hazard triangle containing a test tube, marking Qt ROS2 as an experimental extension

Warning: Qt ROS2 is an Experimental Extension, released as version 0.1.0. It is published so that you can build with it and tell us what breaks. Treat every API on these pages as provisional: types, properties and CMake commands can change or disappear in any release, and none of it carries Qt's source or binary compatibility guarantees. Do not ship it in a product you cannot rebuild.

Qt ROS2 Bridge connects Qt/QML applications to a running ROS 2 graph. It provides publisher and subscriber types for every ROS 2 message type, service clients and servers, and action clients — all usable directly in QML.

Layer diagram: a QML application uses the generated QML modules, which use Ros2Core, all on the Qt GUI thread. Ros2Core reaches the rclcpp executor on the ROS 2 executor thread through invokeMethod, and results return as a QPromise converted to a JavaScript Promise. Below the executor, rclcpp reaches other ROS 2 nodes through rmw and Fast DDS

The bridge owns the boundary between the two threads. Your QML stays on the Qt GUI thread and never blocks: calls cross to the ROS 2 executor through QMetaObject::invokeMethod, and asynchronous results come back as a QPromise that QML consumes as an ordinary JavaScript promise.

Note: This documentation was generated against ROS 2 Jazzy (rclcpp 28.1.21). The QML types below are generated from that distribution's interface definitions, so a build against a different ROS 2 release may differ in the message types available and in their fields. See the ROS 2 Jazzy documentation.

The hand-written pages — the guides, the examples, and the Qt ROS2 Core QML Types — apply to every distribution. The per-message types under the other QML modules are generated, so they describe Jazzy specifically. One known difference between releases: lifecycle_msgs/TransitionEvent carries a uint64 timestamp up to Jazzy and a builtin_interfaces/Time stamp from Lyrical on, which is a change of both name and type.

Guides

Examples

Reference

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.