Vue d'ensemble du cadre d'annulation de Qt
Introduction
Le cadre d'annulation de Qt est une implémentation du modèle de commande, pour mettre en œuvre la fonctionnalité d'annulation/rétablissement dans les applications.
Le modèle de commande est basé sur l'idée que toutes les modifications dans une application sont effectuées en créant des instances d'objets de commande. Les objets de commande appliquent des modifications au document et sont stockés dans une pile de commandes. En outre, chaque commande sait comment annuler ses modifications pour ramener le document à son état antérieur. Tant que l'application n'utilise les objets de commande que 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 l'annulation 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 le rétablissement pour chaque commande.
Les classes
Le cadre se compose de quatre classes :
- QUndoCommand est la classe de base de toutes les commandes stockées sur une pile d'annulation. Elle peut appliquer (rétablir) ou annuler une seule modification dans le document.
- QUndoStack est une liste d'objets QUndoCommand. Elle contient toutes les commandes exécutées sur le document et peut faire reculer ou avancer l'état du document en les annulant ou en les rétablissant.
- QUndoGroup est un groupe de piles d'annulation. Il est utile lorsqu'une application contient plus d'une pile d'annulation, généralement une pour chaque document ouvert. QUndoGroup fournit une paire unique d'emplacements d'annulation/rétablissement pour toutes les piles du groupe. Il transmet les demandes d'annulation et de rétablissement à la pile active, qui est 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. En cliquant sur une commande dans la vue, l'état du document est déplacé vers l'avant ou vers l'arrière en fonction de cette commande.
Concepts
Les concepts suivants sont pris en charge par le cadre de travail :
- État propre : Utilisé pour signaler quand le document entre et sort d'un état qui a été sauvegardé sur le disque. Il est généralement utilisé pour désactiver ou activer les actions de sauvegarde 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 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 faciles à annuler et à rétablir pour l'utilisateur.
- Macros de commande : Une séquence de commandes, toutes annulées ou refaites en une seule étape. Ces macros simplifient la tâche d'écriture d'une application, car un ensemble de commandes simples peut être composé en commandes plus complexes. Par exemple, une commande qui déplace un ensemble d'objets sélectionnés dans un document peut être créée en combinant un ensemble de commandes, chacune d'entre elles déplaçant un seul objet.
QUndoStack fournit des objets pratiques d'annulation et de rétablissement QAction qui peuvent être insérés dans un menu ou une barre d'outils. Les propriétés textuelles de ces actions reflètent toujours la commande qui sera annulée ou refaite lorsqu'elles sont déclenchées. De même, QUndoGroup fournit des actions d'annulation et de rétablissement qui se comportent toujours comme les actions d'annulation et de rétablissement 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.