Как снять команду, которая на самом деле не запускается в Qt?

Я использую Qt’s undo / redo framework. Я помещаю команду отмены в стек отмены. Однако функции, вызываемые при возврате команды, иногда ничего не делают, поскольку некоторые требования не выполняются. В этом случае, как позволить стеку отмены вернуться к состоянию до того, как команда будет нажата?

Я просто прочитал исходный код QUndoStack::push(), Это вызывает повтор в первом начале. Если это так, я думаю, что мне нужно только выбросить исключение в redo() функционировать, если ничего не сделано. Должно ли это работать?

0

Решение

Я не думаю, что вы можете сделать это. Когда вы помещаете команду отмены в стек, вы делаете это потому, что вносите реальные изменения в свой документ или модель данных. Как только команда нажата, стек вызовет ее redo() метод. Таким образом, вы должны действительно проверить, выполнены ли требования, прежде чем помещать команду в стек. Не нажимайте на команды, которые на самом деле не вносят никаких изменений.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]