Sur cette page

ScxmlStateMachine QML Type

Fournit une interface vers les machines à états créées à partir de fichiers SCXML. En savoir plus…

Import Statement: import QtScxml 6.12
In C++: QScxmlStateMachine

Propriétés

Signaux

Méthodes

Description détaillée

Le type ScxmlStateMachine est une implémentation du format State Chart XML (SCXML).

Tous les états définis dans le fichier SCXML sont accessibles en tant que propriétés de ce type. Ces propriétés sont des valeurs booléennes et indiquent si l'état est actif ou inactif.

Documentation des propriétés

dataModel : ScxmlDataModel

Le modèle de données à utiliser pour cette machine à états.

Les modèles de données SCXML sont décrits dans la spécification SCXML - 5 Modèle de données et manipulation des données. Pour plus d’informations sur les modèles de données pris en charge, consultez la section Conformité SCXML.

La modification du modèle de données une fois que la machine à états a été mise en initialized n'est pas spécifiée dans la norme SCXML et entraîne un comportement indéfini.

Voir également « QScxmlDataModel », « QScxmlNullDataModel » et « QScxmlCppDataModel ».

initialValues : var

Les valeurs initiales à utiliser pour la configuration du modèle de données.

initialized : bool [read-only]

Cette propriété en lecture seule prend la valeur « true » si la machine à états a été initialisée, et « false » dans le cas contraire.

invoked : bool [read-only]

Indique si la machine à états a été appelée à partir d'une machine à états externe.

Cette propriété en lecture seule est définie sur « true » lorsque la machine à états a été lancée en tant que service avec l'élément « <invoke> », et sur « false » dans le cas contraire.

invokedServices : list [read-only]

Liste des services SCXML qui ont été appelés depuis la machine à états principale (éventuellement de manière récursive).

loader : Loader

Le chargeur actuellement utilisé pour résoudre et charger les URI destinés à la machine à états.

name : string [read-only]

Nom de la machine à états tel que défini par l'attribut « name » de la balise <scxml>.

parseErrors : var [read-only]

Liste des erreurs d'analyse survenues lors de la création d'une machine à états à partir d'un fichier SCXML.

running : bool

L'état actuel de cette machine à états.

sessionId : string [read-only]

L'identifiant de session de la machine à états actuelle.

L'identifiant de session est utilisé pour le routage des messages entre les machines à états parentes et enfants. Si une machine à états est lancée par un élément <invoke>, tout événement qu'elle envoie aura le champ invokeid défini sur l'identifiant de session. La machine à états utilisera l’origine d’un événement (définie par l’attribut target ou targetexpr dans un élément <send> ) pour acheminer les messages vers la machine à états fille appropriée.

Documentation sur les signaux

finished()

Ce signal est émis lorsque la machine à états atteint un état final de niveau supérieur.

Le gestionnaire de signal correspondant est onFinished().

Remarque : le gestionnaire correspondant est onFinished.

log(string label, string msg)

Ce signal est émis si une balise <log> est utilisée dans le SCXML. label correspond à la valeur de l'attribut « label » de la balise <log>. msg correspond à la valeur de l'attribut « expr » évalué de la balise <log>. En l'absence d'attribut « expr », une chaîne vide sera renvoyée.

Le gestionnaire de signal correspondant est onLog().

Remarque : le gestionnaire correspondant est onLog.

reachedStableState()

Ce signal est émis lorsque la file d'attente des événements est vide à la fin d'une étape de macro ou lorsqu'un état final est atteint.

Le gestionnaire de signal correspondant est onreachedStableState().

Remarque : le gestionnaire correspondant est onReachedStableState.

Documentation de la méthode

list<string> activeStateNames(bool compress)

Récupère la liste des noms de tous les états actifs.

Lorsqu'un état est actif, tous ses états parents sont, par définition, actifs. Lorsque l'compress est défini sur « true » (valeur par défaut), les états parents sont filtrés et seuls les états feuilles sont renvoyés. Lorsqu'il est défini sur « false », la liste complète des états actifs est renvoyée.

void cancelDelayedEvent(string sendId)

Annule un événement différé avec l'sendId spécifiée.

bool init()

Initialise la machine à états en définissant les valeurs initiales des éléments <data> et en exécutant toutes les balises <script> de la balise <scxml>. Les valeurs initiales des données sont extraites de la propriété initialValues.

Renvoie « false » si des erreurs d’analyse se produisent ou si l’une des étapes d’initialisation échoue. Renvoie « true » dans le cas contraire.

bool isActive(string scxmlStateName)

Renvoie « true » si l'état spécifié par « scxmlStateName » est actif, « false » dans le cas contraire.

bool isDispatchableTarget(string target)

Renvoie « true » si un message destiné à « target » peut être envoyé par cette machine à états.

Les cibles valides sont :

  • #_parent la machine à états parente si la machine à états actuelle a été lancée par <invoke>
  • #_internal pour la machine à états actuelle
  • #_scxml_sessionid, où sessionid est l’ID de session de la machine à états actuelle
  • #_servicename, où servicename est l'identifiant ou le nom d'un service lancé avec l'adresse <invoke> par cette machine à états

void start()

Lance cette machine à états. La machine réinitialise sa configuration et passe à l'état initial. Lorsqu'un état final de niveau supérieur est atteint, la machine émet le signal finished().

Voir également stop() et finished().

list<string> stateNames(bool compress)

Récupère la liste des noms de tous les États.

Lorsque ` compress ` est défini sur ` true ` (valeur par défaut), les états contenant des états enfants sont filtrés et seuls les états feuilles sont renvoyés. Lorsqu'il est défini sur ` false`, la liste complète de tous les états est renvoyée.

La liste renvoyée ne contient pas les états des machines à états imbriquées éventuelles.

Remarque : l'ordre des noms d'états dans la liste correspond à l'ordre dans lequel les états apparaissent dans le document SCXML.

void stop()

Arrête cette machine à états. La machine n'effectuera plus aucune transition d'état. Sa propriété ` running ` est définie sur ` false`.

Voir également start() et finished().

void submitEvent(event)

Envoie l'event d'événement SCXML vers la file d'attente d'événements interne ou externe, en fonction de la priorité de l'événement.

Lorsqu'un délai est défini, l'événement est mis en file d'attente pour être transmis une fois le délai écoulé. La machine à états prend en charge l'événement et le supprime après son traitement.

Voir également QScxmlEvent.

void submitEvent(string eventName, var data)

Méthode utilitaire permettant de créer et d'envoyer un événement externe dont le nom est « eventName » et dont les données de charge utile sont « data » (facultatif).

© 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.