2010-11-18 28 views
3

J'utilise Qt 4.5 et C++ sous Windows XP.Implémentation de la fonctionnalité Annuler (comme Ctrl + Z) en Qt/C++

Fondamentalement, je vais avoir une interface utilisateur où l'utilisateur va entrer certaines données. Il peut aller et modifier les valeurs disponibles dans l'interface utilisateur. L'interface utilisateur aura des éléments UI Qt base comme QLineEdit, QTableWidget etc.,

Alors maintenant, si l'utilisateur appuie sur le bouton Undo (ou Ctrl + Z ) la valeur précédente doit être conservé dans l'élément de l'interface utilisateur correspondante. Par exemple, s'il y a QLineEdit avec le texte 25. Maintenant, l'utilisateur modifie à 30. Maintenant, en cliquant sur Annuler, l'ancienne valeur 25 doit être conservée. Comme la fonction Annuler qui est généralement disponible dans de nombreuses applications.

Y a-t-il un moyen de le faire?

+1

I modifié « Retour » dans « Annuler » qui est le nom le plus typique de cette fonctionnalité. – unwind

Répondre

7

Vous pouvez utiliser Qt's undo framework.

+0

Désolé de ne pas avoir expliqué comment implémenter votre propre fonctionnalité d'annulation. La réponse de unwind est beaucoup mieux à cet égard. Si vous voulez juste une solution rapide, centrée sur Qt, alors son cadre d'annulation est probablement ce que vous voulez. – gspr

5

La manière classique d'implémenter Undo consiste à représenter chaque action effectuée par l'utilisateur et à les stocker. Vous voulez également pouvoir calculer l'inverse d'une action donnée. Donc, pour une insertion dans un tampon de texte, l'action stockerait le texte inséré, et l'emplacement où l'insertion s'est produite. L'inverse devient alors une suppression, au même endroit et avec la taille du texte inséré.

Lorsque l'utilisateur demande à l'application d'annuler, il suffit de regarder l'action stockée la plus récente et d'exécuter son inverse. Si maintenant, au lieu de supprimer l'action "dépensé", souvenez-vous-en également, vous pouvez implémenter Rétablir en déplaçant l'autre sens dans l'historique des actions.

Notez qu'il s'agit d'une explication abstraite et générique; Comme d'autres réponses le soulignent, Qt a déjà mis en place un cadre pour la mise en œuvre d'Undo. Vous devriez donc d'abord étudier cette question.