Ich lerne Qt für meine Anwendungsentwicklung zu verwenden & Ich bin ziemlich erfolgreich bei der Entwicklung meiner Anwendung. Jetzt möchte ich die Undo Redo Funktionalität für meine Anwendung implementieren. Die doc für dieses Thema hat wenig Informationen. Ich habe sogar versucht, aus den 2 Beispielen im SDK zu verstehen. Aber es fällt mir schwer zu verstehen, wie es funktioniert. Kann sich jemand bitte die Mühe machen, mir zu erklären, wie man es implementiert? Es gibt verschiedene Zustände in meiner Anwendung, für die ich diese Funktionalität bereitstellen möchte. Kann die Erklärung von der allgemeinen Sichtweise sein? Wenn es bereits Artikel im Internet gibt, die das gleiche erklären, dann benachrichtige mich bitte darüber. Das wäre sehr hilfreich. Danke.Nicht nachvollziehbar Rückgängig Redo Framework in Qt
Antwort
Es gibt zwei Hauptklassen: QUndoCommand und QUndoStack;
- QUndoCommand ist die Basisklasse Ihrer Befehlsklasse. Sie müssen undo() und redo() selbst implementieren.
- QUndoStack ist im Grunde ein Container von QUndoCommand Objekte, mit zusätzlichen Methoden wie das Erstellen QAction, Abfrage Undo/Redo Text der aktuellen QUndoCommand (Simple Funktionalitäten, die Sie sich leicht implementieren kann)
Was Sie tun müssen, ist:
- Implementieren Sie Ihre Befehle. Sie müssen entscheiden, wie Sie sich nach Ihren Bedürfnissen redo/rückgängig machen können. Klasse AppendText ist ein gutes Beispiel: http://qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html
- Halten Sie eine QUndoStack-Instanz für jedes Dokument (oder eine Instanz, wenn es nur ein Dokument in der Anwendung gibt).
- Angenommen, Sie haben eine Befehlsklasse "AppendText" und eine Schaltfläche "Anhängen" in der Benutzeroberfläche. Wenn auf die Schaltfläche "Anhängen" geklickt wird, müssen Sie eine AppendText-Befehlsinstanz erstellen und QUndoStack :: push (appendCmd) aufrufen. QUndoStack :: push() wird zuerst AppendText :: redo() aufrufen und dann zum Rückgängigmachen in den Container einfügen.
Das ist es.
Yup Ich verstand ein paar Teile, aber ich kann nicht verstehen, warum würde ich dann das Qt Undo Redo Framework verwenden? Wäre es nicht bequemer, meine eigene Klasse zu implementieren, die die gesamte Geschichte der Sitzung & dann rückgängig machen/wiederherstellen je nach Zustand? Alles, was ich fragen möchte, ist, was ich von Qt's eingebautem Framework bekomme, verglichen mit meinem eigenen Framework, das für meine Anwendung angepasst wurde? –
Für einfache Anwendungen kann das Rückgängig-Framework von Qt viel Zeit sparen. Aber wenn Sie eine bessere Lösung für Ihren Fall haben, gehen Sie einfach dafür. Es gibt nichts mysteriöses in Qt Rückgängig Framework, das Sie zwingen, es zu verwenden. – Chen
ok danke für die Hilfe. –
- 1. Qt: Richtiges Integrieren von Rückgängig-Framework mit QGraphicsScene
- 2. Undo/Redo in WPF?
- 3. Wie überprüft man Redo, rückgängig machen Leerzeichen in ibd-Datei?
- 4. undo/redo event binding
- 5. Undo/Redo funktioniert nicht in android Canvas
- 6. Undo und Redo in WYSYWYG contentEditable in SWT funktioniert nicht
- 7. Rückgängig in TextChanged kann nicht verwendet werden
- 8. In Auswahl rückgängig machen?
- 9. Android Bitmap Undo Redo-Effekt
- 10. Farbauswahl funktioniert nicht mit Undo und Redo
- 11. ActionScript - Allgemeine Undo/Redo-API?
- 12. Webots Qt-Framework-Bibliotheken
- 13. CLion und Qt Framework
- 14. Qt winmigrate framework
- 15. Implementieren Rückgängig-Funktion (wie Strg + Z) in Qt/C++
- 16. .NET RichTextBox rückgängig machen
- 17. Redo Tastaturkürzel für Eclipse
- 18. Undo/Redo mit kaskadierenden Löschungen
- 19. Qt Installer Framework: Auto Update
- 20. Qt 4.5 .NET Framework-Abhängigkeit
- 21. TinyMCE setContent löscht den Verlauf nicht rückgängig
- 22. So implementieren Sie Rückgängig machen/Wiederherstellen in UIWebView
- 23. Deaktivieren Sie Rückgängig und Wiederherstellen in Browsern
- 24. Basic Undo/Redo Logik mit Verschlüsse
- 25. Frühzeitige Redo-Log-Umschaltung in Oracle RAC
- 26. Problem bei der Implementierung von Undo/Redo
- 27. textarea: Taste zum Auslösen des nativen Undo/Redo
- 28. Wie Implementieren undo/redo in einer MVVM-Anwendung implementieren?
- 29. Qt Quick vs Graphics View Framework (QGraphicsScene)
- 30. Rückgängig-Befehl in R
Was verstehst du nicht? Spezifische Klassen? Überblick ? – Synxis
Ich kann die 4 Klassen verstehen und was ihr Zweck ist, aber ich weiß nicht, wie man sie benutzt, wie zB QndoCommand. –