Visión general del marco de deshacer de Qt
Introducción
El Framework de Deshacer de Qt es una implementación del patrón Command, para implementar la funcionalidad de deshacer/rehacer en las aplicaciones.
El patrón Command se basa en la idea de que toda la edición en una aplicación se realiza creando instancias de objetos command. Los objetos comando aplican cambios al documento y se almacenan en una pila de comandos. Además, cada comando sabe cómo deshacer sus cambios para devolver el documento a su estado anterior. Mientras la aplicación sólo utilice objetos comando para cambiar el estado del documento, es posible deshacer una secuencia de comandos recorriendo la pila hacia abajo y llamando a deshacer a cada comando sucesivamente. También es posible rehacer una secuencia de comandos recorriendo la pila hacia arriba y llamando a rehacer en cada comando.
Clases
El framework consta de cuatro clases:
- QUndoCommand es la clase base de todos los comandos almacenados en una pila de deshacer. Puede aplicar (rehacer) o deshacer un único cambio en el documento.
- QUndoStack es una lista de objetos QUndoCommand. Contiene todos los comandos ejecutados en el documento y puede hacer retroceder o avanzar el estado del documento deshaciéndolos o rehaciéndolos.
- QUndoGroup es un grupo de pilas de deshacer. Es útil cuando una aplicación contiene más de una pila de deshacer, normalmente una por cada documento abierto. QUndoGroup proporciona un único par de ranuras de deshacer/rehacer para todas las pilas del grupo. Reenvía las peticiones de deshacer y rehacer a la pila activa, que es la pila asociada al documento que el usuario está editando en ese momento.
- QUndoView es un widget que muestra el contenido de una pila de deshacer. Al hacer clic en un comando de la vista, el estado del documento retrocede o avanza hasta ese comando.
Conceptos
El framework soporta los siguientes conceptos:
- Estado limpio: Se utiliza para señalar cuándo el documento entra y sale de un estado que se ha guardado en disco. Normalmente se utiliza para desactivar o activar las acciones de guardado y para actualizar la barra de título del documento.
- Compresión de comandos: Se utiliza para comprimir secuencias de comandos en un único comando. Por ejemplo: En un editor de texto, los comandos que insertan caracteres individuales en el documento pueden comprimirse en un único comando que inserte secciones enteras de texto. Estos cambios de mayor tamaño son más cómodos de deshacer y rehacer para el usuario.
- Macros de comandos: Secuencia de comandos que se deshacen o rehacen en un solo paso. Simplifican la tarea de escribir una aplicación, ya que un conjunto de comandos más simples puede componerse en comandos más complejos. Por ejemplo, un comando que mueve un conjunto de objetos seleccionados en un documento puede crearse combinando un conjunto de comandos, cada uno de los cuales mueve un único objeto.
QUndoStack proporciona prácticos objetos de deshacer y rehacer QAction que pueden insertarse en un menú o una barra de herramientas. Las propiedades de texto de estas acciones siempre reflejan qué comando se deshará o rehará cuando se activen. Del mismo modo, QUndoGroup proporciona acciones de deshacer y rehacer que siempre se comportan como las acciones de deshacer y rehacer de la pila activa.
© 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.