Sur cette page

Présentation du framework « Undo » de Qt

Introduction

Le framework « Undo » de Qt est une implémentation du modèle de conception « Command », permettant de mettre en œuvre des fonctionnalités d’annulation et de rétablissement dans les applications.

Le modèle « Command » repose sur l’idée que toutes les modifications apportées dans une application s’effectuent en créant des instances d’objets « command ». Ces objets appliquent des modifications au document et sont stockés dans une pile de commandes. De plus, chaque commande sait comment annuler ses modifications afin de ramener le document à son état précédent. Tant que l’application utilise uniquement des objets « commande » pour modifier l’état du document, il est possible d’annuler une séquence de commandes en parcourant la pile vers le bas et en appelant la méthode « undo » sur chaque commande à tour de rôle. Il est également possible de rétablir une séquence de commandes en parcourant la pile vers le haut et en appelant la méthode « redo » sur chaque commande.

Classes

Le framework se compose de quatre classes :

  • QUndoCommand est la classe de base de toutes les commandes stockées dans une pile d’annulation. Elle permet d’appliquer (rétablir) ou d’annuler une modification unique dans le document.
  • QUndoStack est une liste d’objets ` QUndoCommand `. Elle contient toutes les commandes exécutées sur le document et permet de faire évoluer l’état du document vers le passé ou vers le futur en annulant ou en rétablissant ces commandes.
  • QUndoGroup est un groupe de piles d’annulation. Elle est utile lorsqu’une application contient plusieurs piles d’annulation, généralement une pour chaque document ouvert. ` QUndoGroup ` fournit une seule paire d’emplacements d’annulation/rétablissement pour toutes les piles du groupe. Elle transmet les demandes d’annulation et de rétablissement à la pile active, c’est-à-dire la pile associée au document en cours d’édition par l’utilisateur.
  • QUndoView est un widget qui affiche le contenu d’une pile d’annulation. Cliquer sur une commande dans la vue fait revenir l’état du document en arrière ou l’avance jusqu’à cette commande.

Concepts

Les concepts suivants sont pris en charge par le framework :

  • État « Clean » : utilisé pour signaler quand le document entre dans un état qui a été enregistré sur le disque ou en sort. Il est généralement utilisé pour désactiver ou activer les actions d’enregistrement, et pour mettre à jour la barre de titre du document.
  • Compression des commandes : utilisée pour compresser des séquences de commandes en une seule commande. Par exemple : dans un éditeur de texte, les commandes qui insèrent des caractères individuels dans le document peuvent être compressées en une seule commande qui insère des sections entières de texte. Ces modifications plus importantes sont plus pratiques à annuler et à rétablir pour l’utilisateur.
  • Macros de commandes : Séquence de commandes dont toutes les actions peuvent être annulées ou rétablies en une seule étape. Elles simplifient la tâche de développement d’une application, car un ensemble de commandes plus simples peut être combiné pour former des commandes plus complexes. Par exemple, une commande permettant de déplacer un ensemble d’objets sélectionnés dans un document peut être créée en combinant un ensemble de commandes, dont chacune déplace un seul objet.

QUndoStack fournit des objets d’ QAction s pratiques d’annulation et de reprise qui peuvent être insérés dans un menu ou une barre d’outils. Les propriétés de texte de ces actions reflètent toujours la commande qui sera annulée ou reprise lorsqu’elles sont déclenchées. De même, QUndoGroup fournit des actions d’annulation et de reprise qui se comportent toujours comme les actions d’annulation et de reprise de la pile active.

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