Uczę się używać Qt do tworzenia aplikacji & Jestem dość udany w rozwijaniu mojej aplikacji. Teraz chcę zaimplementować funkcję cofania powtórzeń dla mojej aplikacji. Numer doc dla tego tematu zawiera niewiele informacji. Próbowałem nawet zrozumieć z 2 przykładów w SDK. Ale ciężko mi zrozumieć, jak to działa. Czy ktoś może zadać mi trud wyjaśnienia mi, jak to zrobić? Istnieją różne stan w mojej aplikacji, dla których chcę zapewnić tę funkcjonalność. Czy wyjaśnienie może być z ogólnego punktu widzenia? Jeśli istnieją już artykuły w Internecie wyjaśniające to samo, proszę powiadom mnie o nich. Byłoby to bardzo pomocne. Dziękuję.Nie można zrozumieć Undo Redo Framework w Qt
Odpowiedz
Istnieją 2 podstawowe klasy: QUndoCommand i QUndoStack;
- QUndoCommand jest klasą podstawową klasy poleceń. Musisz samodzielnie zaimplementować funkcje cofania() i ponownego wykonywania().
- QUndoStack jest w zasadzie pojemnik obiektów QUndoCommand z dodatkowych metod, takich jak tworzenie QAction, cofanie Query/przerobić tekst obecnego QUndoCommand (proste funkcje, które można wdrożyć się łatwo)
Co trzeba zrobić, to:
- Zaimplementuj swoje polecenia. Musisz zdecydować, jak zaimplementować ponowne wykonanie/cofnij się w zależności od potrzeb. klasa AppendText jest dobrym przykładem: http://qt-project.org/doc/qt-5.0/qtwidgets/qundocommand.html
- Zachowaj instancję QUndoStack dla każdego dokumentu (lub jedną instancję, jeśli w aplikacji jest tylko jeden dokument).
- Powiedzmy, że masz klasę poleceń "AppendText" i przycisk "Append" w interfejsie użytkownika. Jeśli klikniesz przycisk "Dołącz", musisz utworzyć instancję polecenia AppendText i wywołać QUndoStack :: push (appendCmd). QUndoStack :: push() najpierw wywoła AppendText :: redo(), a następnie umieści go w pojemniku w celu cofnięcia.
To wszystko.
Yup Rozumiem niektóre kawałki i kawałki, ale nie mogę zrozumieć, dlaczego miałbym użyć Qt Undo Redo Framework? Czy wygodniej byłoby zaimplementować własną klasę, która ma całą historię sesji, a następnie cofnąć/ponowić zgodnie ze stanem? Wszystko, co chcę zapytać, to co otrzymałem z wbudowanej platformy Qt w porównaniu do mojego własnego środowiska dostosowanego do mojej aplikacji? –
Dla prostych aplikacji, struktura cofania qt może zaoszczędzić sporo czasu. Ale jeśli masz lepsze rozwiązanie dla swojej sprawy, po prostu idź za tym. W rozwiązaniu qt nie ma nic tajemniczego, co zmusiłoby go do użycia. – Chen
ok dzięki za pomoc. –
- 1. Nie można zrozumieć ostrzeżenia EclipseLink
- 2. Nie można zrozumieć Iteratee, Enumerator, Enumeratee w Play 2.0
- 3. Qt Installer Framework Uninstaller
- 4. Implementacja Cofnij - Ponów funkcjonalność w Qt?
- 5. Qt: Nie można ustawić układu w QMainWindow
- 6. .NET RichTextBox undo
- 7. Nie można zrozumieć kodu użytego w łańcuchu formatu
- 8. Nie można zrozumieć implementacji metody until() w FluentWait
- 9. Nie można zrozumieć mHandler.obtainMessage() w przykładzie Android Bluetooth
- 10. Ukrywanie preludium Haskella, UNDO?
- 11. Uruchom program na drugim monitorze (framework Qt)
- 12. nie mogę zrozumieć isFinishing
- 13. Nie można wycofać transakcji w Zend Framework
- 14. Redo-skrót zniknął - Zaćmienie na OSX
- 15. Qt 5.5 i Qt Installer Framework 2.0.1: Logo nie jest wyświetlane pomimo obecności w pliku config.xml
- 16. Qt Nie można otworzyć pliku włączającego: 'QPrinter'
- 17. Nie można skompilować Qt z Xcode 6.0.1
- 18. Nie można użyć libclang z Qt
- 19. Qt: nie można odnaleźć -lGL błąd
- 20. Tridion undo-checkout/check-in
- 21. Nie można zrozumieć parametru trasy interfejsu API Grape
- 22. Nie można zrozumieć niestandardowego stanu pobierania z Androidem
- 23. Nie można zrozumieć ten przykład clojure make-adder
- 24. Nie można zrozumieć transformacji układu współrzędnych grafiki iOS, potrzebuję pomocy
- 25. Nie można zrozumieć wyników metod z Opcjonalnym parametrem
- 26. Nie można zrozumieć komunikatu o błędzie WCF, potrzebna pomoc
- 27. Nie można zrozumieć SOLIDNYCH zasad i wzorców projektowych
- 28. Dlaczego nie można tego zrozumieć za pomocą interferencji typu F #?
- 29. Nie można zrozumieć wyniku dla wyrażenia wielowierszowego qr/(. $. +)/Xms
- 30. qt nie można otworzyć pliku wejściowego 'c: \ Qt \ qt \ lib \ qtmaind.lib'
Czego nie rozumiesz? Określone klasy? Przegląd ? – Synxis
Potrafię zrozumieć 4 klasy i ich cel, ale nie wiem, jak z nich korzystać, np. Powiedz QUndoCommand. –