В моем приложении MDI я использую инфраструктуру Qt undo / redo, и она работает очень хорошо.
Теперь я реализовал операцию, которая требует много времени, поэтому я хотел бы запустить ее в другом потокечтобы приложение не зависало и пользователь мог работать с другими окнами MDI.
Поэтому мне нужно запустить операцию в новом потоке внутри метода redo()
моего QUndoCommand
.Это проблема, потому что:
- Если внутри метода
redo()
я дождусь завершения потока, приложение зависнет, поэтому оно бесполезно. - Если я не будуt ожидание завершения потока, метод
redo()
возвращается до завершения операции, и это может вызвать множество проблем и ошибок (например, если пользователь использует механизм отмены / возврата, возможно, что команды, следующие за потокомкоманда выполняется до ее завершения).
Есть идеи?