Table of Contents
QM Download, Features, Setup, and Alternatives: Official QP Modeler Guide
You want to turn state machine sketches into working C or C++ code, and you want a tool that does it without fuss. QM download searches usually come from embedded developers in exactly that spot. This guide covers what QM (QP Modeler) is, where to get it safely, how to set it up, and whether it’s worth your time.
Good to know: I checked the official Quantum Leaps materials and GitHub documentation for this guide. Details such as version numbers change, so always confirm them on the official QM site before you download.
What Is QM (QP Modeler)?
Quick answer: QM (QP Modeler) is a freeware graphical modeling tool from Quantum Leaps. It lets you design UML state machines visually and generate C or C++ code for embedded software built on the QP frameworks.
What Is QM Software Used For?
Developers use QM to draw event-driven behavior as hierarchical state machines, then turn that drawing into source code. It replaces long hand-written switch statements with a diagram you can read at a glance.
QM and Quantum Leaps: Understanding the Connection
Quantum Leaps is the company behind QM and the QP real-time embedded frameworks. QM was built to work with QP, so the two share a design philosophy: small, event-driven, and friendly to resource-limited microcontrollers.
How QM Supports UML State Machines and Statecharts
QM supports hierarchical state machines, often called UML statecharts. You can nest states, so a child state inherits behavior from its parent. That keeps diagrams small, because shared behavior is drawn only once.
QM’s Role in Model-Based Embedded Software Development
In model-based design, the model is the main design artifact, not an afterthought. QM sits at that center. You change the diagram, regenerate the code, and the two stay in sync.
Who Should Use QM Modeler?
QM suits embedded engineers, firmware teams, students learning statecharts, and anyone working with QP/C or QP/C++. It’s less useful if you only want generic UML class diagrams for documentation.
QM Official Website, Download, and Documentation
Quick answer: Get QM from the Quantum Leaps website (state-machine.com) or the official QuantumLeaps/qm repository on GitHub. Avoid third-party mirrors and repackaged installers.

Where to Download QM From the Official Quantum Leaps Website
The official documentation recommends the QP-bundle, which packages QM with the QP frameworks and the QTools collection. It is the easiest route because the examples and tools arrive ready to go.
Prefer the official source for the main link, which is state-machine.com. Its QM section also holds the online manual.
QM Latest Version and Release Information
At the time of writing, the QM project listing on SourceForge shows the 7.0.x series, with 7.0.3 dated March 2026. Release numbers move, so treat that as a snapshot. The QM revision history page on the official site lists what changed in each release.
QM Download for Windows
The Windows build targets 64-bit systems. The official repository offers a digitally signed installer named like qm_<version>-windows.exe. It creates a desktop shortcut and associates QM model files (.qm and .qmp).
QM Download for Linux
Linux users download a zip archive named like qm_<version>-linux.zip. Unzip it into any folder. The documentation suggests ~/qp/ as a tidy default location.
QM Download for macOS
The macOS build is distributed as a .dmg disk image and, according to the current repository, targets Apple Silicon (ARM64). Older documentation mentions Intel builds, so check the release notes for your Mac.
QM Installer, ZIP Package, and Standalone Download Options
You have three practical paths:
| Option | Best for | Notes |
|---|---|---|
| QP-bundle | Most people | Includes QM, QP frameworks, QTools |
| Windows installer (.exe) | Quick setup | Digitally signed, adds file associations |
| ZIP or DMG package | No admin rights | Unzip or drag into place |
QM User Manual and Official Documentation
The online QM manual lives on the official site. Offline HTML documentation also ships with each release, so you can open html/index.html in a browser without internet access.
QM Examples, Sample Projects, and Tutorials
Example models come with the QP baseline distributions, not the standalone QM download. That’s another reason the QP-bundle is the friendlier choice for beginners.
How to Verify a QM Download
Take a few simple steps before you run anything:
- Download only from state-machine.com or the QuantumLeaps GitHub page.
- On Windows, right-click the installer and check the digital signature.
- Compare the version number with the official release page.
- Be wary of sites that bundle QM with other software or ask for payment.
Caution: QM is freeware from Quantum Leaps. If a site asks you to pay for the download or wraps it in an extra installer, leave and use the official links.
How to Install and Set Up QM
Quick answer: Download the package for your system, install or unzip it, and open QM. Uninstall any older QM version first, because the documentation specifically advises this.

QM Installation on Windows
Run the signed installer and follow the prompts. If you prefer the ZIP version, unzip it into a folder like C:\qp\.
The documentation advises against installing QM under “Program Files.” Paths with spaces and permission rules can cause trouble later.
QM Installation on Linux
Unzip the archive, then make the launch files executable. The documentation says both qm.sh and the qm executable need executable permissions.
chmod u+x qm.sh
Then start the tool with qm.sh from the bin folder.
QM Installation on macOS
Open the .dmg file and drag qm.app into Applications. Because the file doesn’t come from the App Store, macOS may block it. The repository explains how to clear the quarantine attribute from the downloaded file, so follow those steps.
QM First-Time Setup and Configuration
Launch QM and open one of the bundled example models. Exploring a working model teaches more than starting from a blank page. Then set your preferences for fonts and diagram appearance.
QM System Requirements and Compatibility
Current repository notes list Windows x64, Linux x64, and macOS ARM64. QM is a lightweight desktop application, so modern laptops handle it easily. A C or C++ compiler is needed later to build the generated code, not to run QM.
Updating QM to the Latest Version
Uninstall the old version first. If you used the ZIP, just delete the folder. Then install the new release and reopen your models. Keep backups of your .qm files before major updates.
Caution: Keeping an old QM version installed next to a new one can cause problems. Remove the old one first, and back up your models.
Common Installation Problems and Solutions
| Problem | Likely fix |
|---|---|
| QM won’t start on Linux | Make qm.sh and qm executable |
| Missing Qt library error on Linux | Install libxcb-cursor0 (the documented fix on Debian-based systems) |
| macOS blocks the app | Clear the quarantine attribute as the repository instructs |
| Odd behavior on Windows | Move QM out of “Program Files,” for example to C:\qp\ |
QM Features: What Can You Do With QP Modeler?
Quick answer: QM lets you draw UML state machines, organize them into a model, and generate C or C++ code that works with the QP frameworks.
Graphical UML State Machine and Statechart Modeling
You build state diagrams by placing states and drawing transitions between them. The result looks like the diagrams in your design documents, but it is also the real source of your code.
Hierarchical State Machine Design
Hierarchy is QM’s core strength. A superstate can hold shared behavior, and substates only add what is different. Imagine a drone where every flight state handles a “low battery” event the same way. You draw that once in the parent.
Visual Model Editing and Diagram Organization
QM keeps the model in a tree view alongside the diagram. You can rearrange elements, rename them, and keep large systems manageable by splitting them into packages.
Model-Based Software Development
With QM, a change in design means a change in the model first. That discipline reduces drift between documentation and code, which is a common headache in embedded projects.
Automatic C and C++ Code Generation
QM generates source files straight from the model. You get the state handlers and structure without writing the repetitive plumbing yourself.
Embedded Software and Real-Time Application Modeling
The generated code is designed for QP, a lightweight framework aimed at microcontrollers. That makes QM a natural fit for resource-constrained firmware.
QP Framework Integration
QM targets QP/C and QP/C++. The generated code assumes the framework’s event and state machine APIs, so the model and the framework fit together by design.
Active Object Modeling and Event-Driven Design
QM models active objects, which are event-driven components with their own state machine and event queue. This style avoids many shared-data problems common in multithreaded code.
Model Validation and Design Organization
A visual model makes mistakes easier to spot. Unreachable states, missing transitions, and tangled logic show up quickly in a diagram, even before you compile anything.
Managing QM Models and Project Files
QM stores models in files with the .qm extension, and .qmp is also associated with it. Being plain files, they work well with version control systems like Git.
How QM’s UML State Machine Editor Works
Quick answer: You create a state machine inside a class in the model tree, then draw states and transitions on a canvas. QM keeps the diagram and the model linked.
Creating UML State Machine Diagrams
Start by adding a package and a class, then give the class a state machine. A diagram canvas opens, and you begin placing states.
Designing Hierarchical State Machines
Drag a state inside another state to nest it. Children inherit the parent’s transitions unless they override them. This is how you avoid drawing the same “reset” arrow ten times.
Adding States, Transitions, and Events
Each state can have entry and exit actions. Transitions connect states and are triggered by events, optionally with guard conditions. Keep action code short, and call functions for longer logic.
Working With Statecharts and State-Based Logic
Statecharts extend simple state machines with hierarchy and richer behavior. A microwave oven is a classic example. “Door open” overrides everything, whether you were heating or idle.
Modeling Event-Driven Application Behavior
Think in events, not loops. A button press, a timer tick, or a sensor reading arrives as an event, and the current state decides what happens. This mindset makes embedded logic easier to reason about.
Organizing and Managing State Machine Models
Name states clearly and keep one state machine per active object. Group related classes in packages. Small, focused diagrams beat one giant canvas every time.
Using State Machines for Embedded Software Design
State machines suit devices that react to the world: motor controllers, medical pumps, user interfaces, and protocol handlers. The diagram doubles as documentation you can show a reviewer.
QM Model-Based Design and Embedded Software Development
Quick answer: Model-based design treats a diagram as the source of truth. In QM, you design behavior visually and let the tool generate the code that implements it.
Understanding Model-Based Design With QM
QM’s approach is described as “low ceremony.” You don’t need heavy UML formality, only the parts that help you design behavior. That keeps the learning curve reasonable.
Creating Graphical Models for Embedded Systems
Begin with the system’s events and the objects that handle them. Then model each object’s states. This top-down view often reveals design flaws before any code exists.
Designing Real-Time Software With State Machines
Real-time code must respond predictably. State machines make responses explicit, so each event in each state has a defined outcome. That clarity helps with testing and reviews.
Developing Event-Driven Embedded Applications
An event-driven program waits for events and reacts. This saves power on microcontrollers because the system can idle when nothing is happening.
Modeling Embedded Software Architecture
QM models classes, active objects, and their relationships, not only state machines. You can sketch the structure of the whole application alongside its behavior.
Using UML Models in C and C++ Development
You don’t need to master the full UML specification. For many embedded projects, state machine diagrams carry most of the value, with a few class elements for structure.
Benefits of Model-Based Embedded Development
| Benefit | Why it matters |
|---|---|
| Clearer design | Diagrams are easier to read than nested conditionals |
| Fewer repetitive bugs | Generated code removes boilerplate errors |
| Better documentation | The model stays current with the code |
| Easier reviews | Teammates can discuss the diagram, not the syntax |
QM Automatic Code Generation: C and C++
Quick answer: QM generates C or C++ source files from your model. The generated code is built to run on the QP/C or QP/C++ framework.
How QM Generates Source Code From Models
You define output files in the model and tell QM which elements go where. When you generate, QM writes those files, filling in state handlers, structures, and functions based on the diagram.
Generating C Code From UML State Machines
For QP/C, the output follows the framework’s C conventions. State handlers become functions, and the framework dispatches events to them.
Generating C++ Code From Statecharts
For QP/C++, the output uses classes and methods. The structure feels more object-oriented, while the behavior is the same as in the C version.
Understanding Generated Source Files
Expect header and source files containing your active object definitions and state handler logic. Read them once. Knowing what QM produces makes debugging far less mysterious.
Integrating Generated Code Into Embedded Projects
Add the generated files to your IDE or build system, alongside the QP framework and your board support code. The QP example projects show the typical layout for many boards.
Customizing and Maintaining Generated Code
The model, not the generated file, is the source of truth. If you hand-edit generated sections, your changes disappear on the next generation. Put custom logic in the model’s action code or in separate files.
Code Generation Workflow and Limitations
A healthy workflow is: edit the model, generate, build, test, repeat. Note the licensing detail covered in the licensing section below. QM models without a valid QP license certificate are assumed to be under GPL, and the documentation says they are limited to a certain number of states.
Caution: Don’t hand-edit generated code. The next generation run will overwrite your changes.
Understanding the QP Framework and Active Objects
Quick answer: QP is a family of lightweight real-time embedded frameworks from Quantum Leaps. They implement active objects and hierarchical state machines, and QM generates code for them.
What Is the Quantum Leaps QP Framework?
QP provides the runtime: event queues, event dispatching, timers, and scheduling support. QM provides the design tool. Together they cover design to execution.
QP/C and QP/C++ Frameworks Explained
QP/C is written for the C language, and QP/C++ for C++. Choose the one that matches your project, since QM can generate code for either.
How QM Works With QP Frameworks
QM generates code that calls into the framework’s APIs. That is why the framework must be part of your build. The QP-bundle gives you both in one download.
Understanding the Active Object Design Pattern
An active object owns its data and has a private event queue. Other parts of the program talk to it only by sending events. This removes the need for many locks and mutexes.
Modeling Active Objects in QM
In QM, you create a class and mark it as an active object, then attach a state machine to it. The diagram becomes that object’s complete behavior.
Hierarchical State Machines in QP
QP supports hierarchical state machines at runtime. States, entry and exit actions, and nested transitions all map to code the framework understands.
Event-Driven Real-Time Software Architecture
A typical QP application has several active objects exchanging events. A sensor object might publish readings, and a controller object might react. The design reads like a conversation between components.
QM Code Generation for QP Applications
Because QM knows QP’s conventions, you rarely wrestle with glue code. That is the key advantage over a generic UML tool with a general-purpose code generator.
How to Use QM: Beginner’s Tutorial
Quick answer: Open QM, create a model, add a class with a state machine, draw states and transitions, then generate code. Start from a bundled example if you feel unsure.

Exploring the QM Editor Interface
You’ll see a model tree on one side and a diagram canvas in the middle. Properties appear in a separate panel. Spend ten minutes clicking around an example model.
Creating Your First QM Model
Choose to create a new model and pick the target framework, such as QP/C or QP/C++. Then save the file, because QM models are stored as .qm files.
Building a Basic UML State Machine
Try a simple light switch. Add two states, “Off” and “On,” and an initial transition into “Off.” The model is tiny but teaches the whole workflow.
Adding States, Events, and Transitions
Define a “button pressed” event. Draw a transition from “Off” to “On” triggered by it, and another back again. Add entry actions that call your LED functions.
Creating a Hierarchical State Machine
Now add a parent state called “Powered.” Move “Off” and “On” inside it. Add a “power lost” transition from the parent, and both children obey it automatically.
Generating C or C++ Source Code
Define an output file in the model, then run code generation. Open the resulting files and trace each state in the diagram to its function.
Working With a QP Framework Project
Place the generated files in a QP example project, such as a console-type example on your computer. Build it and run. Seeing your state machine react in a terminal is satisfying.
Saving, Opening, and Managing QM Model Files
Save often and use version control. To open an existing model, use the open command, or double-click a .qm file if the Windows installer set up file associations.
QM Model Files, Examples, and Project Management
Quick answer: QM models are saved as .qm files. Example models ship with the QP distributions, so the QP-bundle gives you plenty of working samples.
Understanding the QM Model File Format
The model file holds your classes, state machines, and code generation settings in one place. It is designed to be stored and tracked like any other source file.
How to Open Existing QM Files
Launch QM and open the file from the menu. On Windows, the installer links .qm files to QM, so double-clicking works. If a file won’t open, check that your QM version is recent enough.
Working With Sample QM Projects
Examples cover console programs for Windows, Linux, and macOS, plus embedded boards such as ARM Cortex-M. Pick the one closest to your hardware and modify it.
Finding QM Example Models
Look inside the examples directory of your QP framework installation. The documentation states that examples sit in the folder where you installed QP/C or QP/C++.
Organizing and Reusing Model Components
Group related classes into packages. Reuse proven state machines by copying their structure into new projects. Consistent naming makes this far easier.
Backing Up and Sharing QM Projects
Keep models in Git alongside your source. For sharing with a colleague, send the .qm file and note the QM version you used.
QM Compatibility and Development Environment
Quick answer: QM runs on 64-bit Windows and Linux and on Apple Silicon Macs. It generates standard C and C++ that you build with your usual toolchain.
Supported Operating Systems and Platforms
| System | Current build |
|---|---|
| Windows | x64 |
| Linux | x64 |
| macOS | ARM64 |
Verify this against the release page, since platform support can change.
Windows, Linux, and macOS Compatibility
The same model file opens on all three. A team with mixed machines can share models without conversion.
C and C++ Development Environment Integration
QM doesn’t replace your IDE. You edit models in QM and edit or build the project in your own environment.
Embedded Toolchains and Project Workflows
QP examples exist for compilers such as IAR, Keil ARM, and GNU toolchains. The Arduino ecosystem is also supported, where the Arduino IDE or PlatformIO handles building and uploading.
Working With Real-Time Embedded Systems
Your target hardware only sees the generated C or C++ and the QP framework. QM itself never runs on the device.
Hardware and Software Requirements
A modest modern computer is enough. You also need a compiler for your target, plus the QP framework sources, which the QP-bundle includes.
QM Free Download, Licensing, and Availability
Quick answer: QM is freeware. It is free to download and use but is not open source. The generated code follows the license of the QP framework you target.
Is QM Free to Download?
Yes. The official documentation describes QM as freeware. You accept a basic end-user license agreement during installation.
Understanding QM Licensing and Usage Conditions
The agreement protects Quantum Leaps from warranty claims and prohibits removing copyright notices. Read it yourself, since terms can be updated.
QM Software Availability for Different Operating Systems
QM is available for Windows, Linux, and macOS, so licensing doesn’t change with the platform. Availability depends mostly on the architecture, as covered earlier.
QM and QP Framework: Understanding Their Different Roles
QM is the modeling tool, while QP is the runtime framework. They are licensed separately. The code QM generates is licensed under the same terms as the QP framework it was generated for.
What to Check Before Using QM in Commercial Projects
Check these points first:
- Read the current QP licensing page on state-machine.com.
- Note that QP offers open-source (GPL) and commercial licensing.
- The documentation says models without a valid QP license certificate are assumed to be GPL and can generate only a limited number of states. One version of the README gives that limit as 20.
- Confirm the current rules for your QM version before you plan a large product.
Risk notice: This is not legal advice. For a commercial product, ask a qualified professional or contact Quantum Leaps directly.
QM Pros and Cons
Quick answer: QM’s best points are visual design, hierarchical state machines, and tight QP integration. Its drawbacks are a focused scope, the QP dependency, and licensing details to understand.
Advantages of QM for State Machine Modeling
Pros
- Clear diagrams for complex behavior
- Hierarchy that cuts duplicated logic
- Freeware access
- Cross-platform desktop support
- Models that double as documentation
Cons
- Learning curve for state machine thinking and QP concepts
- Built around QP, so less flexible for other frameworks
- Licensing details to understand before commercial use
Benefits of Automatic Code Generation
Generated code is consistent. It removes tedious boilerplate and prevents typo-style bugs. Changing a transition means redrawing an arrow, not hunting through code.
Limitations and Learning Curve
You must learn state machine thinking and the QP concepts. That takes a little time. QM is also built around QP, so it is less flexible if you want to target other frameworks.
QM Compared With Traditional Manual Coding
| Factor | QM model-based | Manual coding |
|---|---|---|
| Readability | Diagram-driven | Depends on the author |
| Speed on small tasks | Slower to start | Fast |
| Speed on complex logic | Often faster | Gets messy |
| Consistency | High | Varies |
| Learning curve | Moderate | Low initially |
QM Review: Is QP Modeler Worth Using?
Quick answer: For embedded developers using QP, yes. QM is a focused, practical tool. If you need a general-purpose UML suite, look elsewhere.
Ease of Use and Visual Modeling Experience
The interface is straightforward and lightweight. Beginners can draw a working state machine within an hour, especially from an example.
UML Statechart and Hierarchical State Machine Capabilities
This is the heart of the product. The hierarchy handling mirrors how QP executes state machines, so the diagram you draw is the behavior you get.
C and C++ Code Generation Workflow
The generate, build, run loop is quick. Keeping generated code out of your hand-edited files keeps the workflow clean.
QP Framework Integration
Integration is the headline feature. Few tools match a framework this closely, because QM and QP are developed by the same company.
Best Use Cases for QM
- Firmware for IoT devices and sensors
- Motor and power control
- Embedded user interfaces
- Protocol and communication handlers
- Teaching state machines and event-driven design
Who Should Choose QM?
Choose QM if you write C or C++ for microcontrollers and like the active object approach. Skip it if you only want diagrams for documents, or if your project is committed to another framework.
Best QM Alternatives and Similar UML Modeling Tools
Quick answer: Popular alternatives include MATLAB Stateflow, itemis CREATE (formerly YAKINDU Statechart Tools), IBM Rhapsody, Sparx Enterprise Architect, and the open-source StateSmith. Features and prices change, so check each vendor.
UML State Machine Modeling Software Alternatives
General UML suites such as Enterprise Architect and Rhapsody cover state machines inside a wider modeling platform. They suit large organizations with formal processes.
Statechart Editors for Embedded Software Development
itemis CREATE focuses on statecharts and generates code for several languages. Stateflow lives in the MATLAB and Simulink environment, which is common in control engineering.
Model-Based Design Tools for C and C++ Developers
StateSmith is an open-source option aimed at generating state machine code from diagrams. Check its current documentation for supported languages and diagram tools.
Free UML State Machine and Statechart Editors
Free options exist, including open-source and community-edition tools. QM itself is freeware. Always verify the license and the limits of any “free” edition before relying on it.
QM vs. Other Model-Based Development Tools
| Tool type | Strength | Trade-off |
|---|---|---|
| QM | Tight QP integration, lightweight | Centered on QP |
| Stateflow | Simulation and control design | Needs MATLAB tools |
| itemis CREATE | Statechart focus, multi-language | Different workflow from QP |
| Enterprise Architect / Rhapsody | Full UML suites | Heavier and commercial |
| StateSmith | Open source, flexible | Smaller ecosystem |
How to Choose the Right QM Alternative
Ask four questions. What language do you use? Do you need simulation? What’s your budget? Is a framework already chosen? If you’re on QP, QM usually wins. Otherwise compare trial versions.
If you also work with databases next to your embedded projects, tools like the ones covered in this DataGrip guide can help with that side of your workflow.
QM Troubleshooting and Common Problems
Quick answer: Most QM problems come from permissions, missing libraries, outdated versions, or a framework mismatch. Check those first.
QM Not Opening on Windows, Linux, or macOS
On Windows, try moving QM to a simple path like C:\qp\. On Linux, confirm both launch files are executable. On macOS, clear the download quarantine attribute as described in the repository.
QM Installation and Setup Errors
Uninstall previous versions first, as the documentation insists. Avoid “Program Files.” Re-download the file if the installer seems corrupted.
QM Model Files Not Opening
Check that the file is a valid .qm file and that your QM version isn’t older than the one that created it. Restore a backup if the file is damaged.
Missing or Incorrect State Machine Elements
Verify that every transition has a source and target, and that your initial transition exists. Using the model tree helps you find elements that don’t appear on the diagram.
QM C or C++ Code Generation Errors
Confirm your output file definitions and the selected target language. Also check the state count against the licensing note if generation stops unexpectedly.
QP Framework Integration Problems
Match your QP version to the one your model targets. Many integration errors disappear when the QM, QP, and example versions all come from the same QP-bundle.
Updating QM and Resolving Compatibility Issues
Read the revision history before upgrading. Test your build with a copy of your project, and ask questions on the official support forum when stuck.
Frequently Asked Questions About QM
QM is used to design UML state machines visually and generate C or C++ code for embedded software.
Yes. QM stands for QP Modeler, the modeling tool from Quantum Leaps.
Download it from the official Quantum Leaps website or the QuantumLeaps/qm GitHub repository. The QP-bundle is the recommended option.
QM is freeware, but it isn’t open source. Check the QP licensing terms before using it in a commercial product.
QM is the design and code generation tool. QP is the runtime framework that executes the generated code.
Yes. It generates code for the QP/C and QP/C++ frameworks.
Examples ship with the QP distributions, and the official online manual has tutorials and guidance.
Conclusion
QM gives embedded developers a clear way to design behavior and turn it into dependable code. You draw the states, define the events, and let the tool handle the repetitive parts. That freedom to think in diagrams is what makes it feel so good to use.
Start with the QP-bundle, open an example, and change one transition to see how the code reacts. Check the licensing page before shipping a commercial product. Do that, and you’ll be building tidy, event-driven firmware before you know it.